Advertisement
Guest User

help pls

a guest
Feb 23rd, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. // Class that defines the node object
  7. class Node {
  8. private:
  9. int item;
  10. Node* nextPtr;
  11. Node* prevPtr;
  12.  
  13. public:
  14. //constructors
  15. Node();
  16. Node(int);
  17. Node(int, Node*);
  18. Node(int, Node*, Node*);
  19.  
  20. //Accessor Methods
  21. void setItem(int);
  22. int getItem();
  23. void setNextPtr(Node*);
  24. Node* getNextPtr();
  25. void setPrevPtr(Node*);
  26. Node* getPrevPtr();
  27.  
  28. };
  29.  
  30. //regular c-type function for printing the Linked List
  31. void printIntList(Node* beginningNodePtr);
  32. void printIntListReverse(Node* beginningNodePtr);
  33. void deleteLastNode(Node* argPtr);
  34. void deleteNode(Node* argPtr);
  35. void insertNode(Node* argPtr);
  36.  
  37.  
  38. int main(void) {
  39.  
  40. Node* headPtr = nullptr;
  41. Node* curNodePtr = nullptr;
  42. Node* tempPtr = nullptr;
  43.  
  44.  
  45. curNodePtr = new Node(1); //head
  46. headPtr = curNodePtr;
  47.  
  48. for (int i = 2; i < 6;i++) { //new nodes filled with ints 2-5
  49. tempPtr = new Node(i);
  50. tempPtr->setPrevPtr(curNodePtr); //attach temp's prevPtr to head
  51. curNodePtr->setNextPtr(tempPtr); //attach head's nextPtr to temp
  52. curNodePtr = curNodePtr->getNextPtr(); //step forward and temp becomes curNode
  53. }
  54.  
  55. printIntList(headPtr);
  56. printIntListReverse(headPtr);
  57.  
  58. deleteLastNode (headPtr);
  59.  
  60. return (0);
  61. }
  62.  
  63. void printIntList(Node* beginningNodePtr) {
  64.  
  65. Node* tempNodePtr = beginningNodePtr;
  66.  
  67. cout << "Forward ******************" << endl;
  68. if (tempNodePtr == nullptr) {
  69. cout << "List Empty" << endl;
  70. }
  71. else {
  72. while (tempNodePtr->getNextPtr() != nullptr) {
  73. cout << tempNodePtr->getItem() << endl;
  74. tempNodePtr = tempNodePtr->getNextPtr();
  75.  
  76. };
  77. cout << tempNodePtr->getItem() << endl;
  78. }
  79. cout << "******************" << endl;
  80.  
  81. }
  82.  
  83. void printIntListReverse(Node* beginningNodePtr) {
  84.  
  85. Node* tempNodePtr = beginningNodePtr;
  86.  
  87. if (tempNodePtr == nullptr) {
  88. cout << "List Empty" << endl;
  89. }
  90. else {
  91. while (tempNodePtr->getNextPtr() != nullptr) {
  92. tempNodePtr = tempNodePtr->getNextPtr();
  93. };
  94.  
  95. // now tempNodePtr is at the end;
  96. cout << "Reverse ******************" << endl;
  97. while (tempNodePtr->getPrevPtr() != nullptr) {
  98. cout << tempNodePtr->getItem() << endl;
  99. tempNodePtr = tempNodePtr->getPrevPtr();
  100. };
  101. cout << tempNodePtr->getItem() << endl;
  102. cout << "******************" << endl;
  103. }
  104.  
  105. }
  106.  
  107. void deleteLastNode(Node* headPtr){
  108.  
  109. Node* tempNodePtr = headPtr;
  110.  
  111. //step to end
  112. while (tempNodePtr->getNextPtr() != nullptr) {
  113. tempNodePtr = tempNodePtr->getNextPtr();
  114. }
  115.  
  116. tempNodePtr->setPrevPtr(tempNodePtr->getPrevPtr()); //steps back
  117.  
  118. delete tempNodePtr->getNextPtr()->getItem(); //deallocate forward node's item(poly)
  119. delete tempNodePtr->getNextPtr(); //deallocate node container
  120. tempNodePtr->getNextPtr() = nullptr; //loses ref
  121.  
  122.  
  123.  
  124. tempNodePtr->setItem(NULL);
  125. tempNodePtr->setNextPtr(nullptr);
  126. printIntList(headPtr);
  127.  
  128.  
  129.  
  130. }
  131.  
  132. void deleteNode(Node* argPtr){
  133. }
  134.  
  135. void insertNode(Node* argPtr){
  136. }
  137.  
  138. //Node Implementation
  139. Node::Node(){
  140. setItem(0); //default to empty int
  141. setNextPtr(nullptr);
  142. setPrevPtr(nullptr);
  143. }
  144.  
  145. Node::Node(int arg){
  146. setItem(arg);
  147. setNextPtr(nullptr);
  148. setPrevPtr(nullptr);
  149. }
  150.  
  151. Node::Node(int arg, Node* argPtr){
  152. setItem(arg);
  153. setNextPtr(argPtr);
  154. setPrevPtr(nullptr);
  155. }
  156.  
  157. Node::Node(int arg, Node* argNextPtr, Node* argPrevPtr){
  158. setItem(arg);
  159. setNextPtr(argNextPtr);
  160. setPrevPtr(argPrevPtr);
  161. }
  162.  
  163. void Node::setItem(int arg){item = arg;}
  164.  
  165. int Node::getItem(){return item;}
  166.  
  167. void Node::setNextPtr(Node* argPtr) {nextPtr = argPtr; }
  168.  
  169. Node* Node::getNextPtr(){return nextPtr;}
  170.  
  171. void Node::setPrevPtr(Node* arg){prevPtr = arg;}
  172.  
  173. Node* Node::getPrevPtr(){return prevPtr;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement