Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct node {
  5. node *next = nullptr;
  6. node *prev = nullptr;
  7. int num = 0;
  8. string name = "";
  9. };
  10.  
  11. void add(node* L,string sname,int snum) {
  12. node *p = L;
  13. while (p->next != nullptr)
  14. p = p->next;
  15. node *q = new node;
  16. q->name = sname;
  17. q->num = snum;
  18. p->next = q;
  19. q->next = nullptr;
  20. q->prev = p;
  21. }
  22.  
  23. void del(node* L, int n) {
  24. node* p=L;
  25. while(p->next!=nullptr)
  26. p=p->next;
  27. while(n>0) {
  28. if (n >= p->num) {
  29. n -= p->num;
  30. node *q = p;
  31. p = p->prev;
  32. delete q;
  33. p->next = nullptr;
  34. } else {
  35. p->num -= n;
  36. break;
  37. }
  38. }
  39. }
  40.  
  41. void get(node* L,string sname) {
  42. node *p = L;
  43. int n = 0;
  44. while (p != nullptr) {
  45. if (p->name == sname)
  46. n += p->num;
  47. p = p->next;
  48. }
  49. cout << n << endl;
  50. }
  51.  
  52. int main() {
  53. node *L = new node;
  54. L->next = nullptr;
  55. string opera, name;
  56. int num, n, k;
  57. cin >> k;
  58. for (int i = 0; i < k; i++) {
  59. cin >> opera;
  60. if (opera == "add") {
  61. cin >> num >> name;
  62. add(L, name, num);
  63. }
  64. if (opera == "delete") {
  65. cin >> n;
  66. del(L, n);
  67. }
  68. if (opera == "get") {
  69. cin >> name;
  70. get(L, name);
  71. }
  72. }
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement