Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <climits>
  4. using namespace std;
  5.  
  6. struct Node {
  7. int value = 0;
  8. Node *next = NULL;
  9. Node *prev = NULL;
  10.  
  11. Node(int value) {
  12. this->value = value;
  13. }
  14. };
  15.  
  16. class List {
  17. public:
  18. void pushTail(int valToAdd) {
  19. Node * newNode = new Node(valToAdd);
  20. if (head == NULL) {
  21. head = newNode;
  22. tail = newNode;
  23. return;
  24. }
  25. tail->next = newNode;
  26. newNode -> prev = tail;
  27. tail = newNode;
  28. };
  29.  
  30. int popTail()
  31. {
  32. if (head == NULL)
  33. {
  34. cout << "List is empty" << endl;
  35. }
  36. else
  37. if (head == tail) {
  38. int del = head -> value;
  39. delete head;
  40. head = NULL;
  41. tail = NULL;
  42. cout << del << " <- Deleted Tail" << endl;
  43. return del;
  44. }
  45. else {
  46. int del = tail->value;
  47. tail = tail -> prev;
  48. delete tail->next;
  49. tail->next = NULL;
  50. cout << del << " <- Deleted Tail" << endl;
  51. return del;
  52. }
  53. };
  54.  
  55. int popHead()
  56. {
  57. Node *temp = head;
  58. if (head -> next == NULL)
  59. {
  60. int del = temp->value;
  61. delete head;
  62. head = NULL;
  63. tail = NULL;
  64. cout << del << " <- Deleted Tail" << endl;
  65. return del;
  66. }
  67. else {
  68. head = temp -> next;
  69. temp -> prev = NULL;
  70. int del = temp->value;
  71. delete temp;
  72. cout << del << " <- Deleted Tail" << endl;
  73. return del;
  74. }
  75. };
  76.  
  77. void pushHead(int valToAdd) {
  78. Node * newNode = new Node(valToAdd);
  79. if (head == NULL) {
  80. head = newNode;
  81. tail = newNode;
  82. return;
  83. }
  84. newNode->next = head;
  85. head -> prev = newNode;
  86. head = newNode;
  87. };
  88.  
  89. void printAll() {
  90. Node * buff = head;
  91. cout<<"print List:" << endl;
  92. while (buff != NULL) {
  93. cout<< buff->value << endl;
  94. buff = buff->next;
  95. }
  96. };
  97.  
  98. ~List(){
  99. while (head) {
  100. tail = head -> next;
  101. delete head;
  102. head = tail;
  103. }
  104. }
  105.  
  106. private:
  107. Node * head = NULL;
  108. Node * tail = NULL;
  109. };
  110.  
  111. int main() {
  112. List list;
  113. list.pushHead(1);
  114. list.pushHead(0);
  115. list.pushHead(2);
  116. list.pushHead(6);
  117. list.pushTail(9);
  118. list.printAll();
  119.  
  120. list.popHead();
  121. list.popHead();
  122. list.popTail();
  123. list.popHead();
  124. list.popHead();
  125. list.printAll();
  126.  
  127. list.pushHead(5);
  128. list.printAll();
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement