Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 CSE 2341 Object Oriented Programming with C++ Note Set #18.

Similar presentations


Presentation on theme: "1 CSE 2341 Object Oriented Programming with C++ Note Set #18."— Presentation transcript:

1 1 CSE 2341 Object Oriented Programming with C++ Note Set #18

2 2 Overview Dynamic Data structures with linked lists

3 3 Linked List Series of connected nodes Can grow/shrink at runtime –dynamic allocation of nodes allows for this Data Null Head

4 4 Linked List Node Data struct ListNode { double data; ListNode* next; }; ListNode is a self referential data structure.

5 5 Basic Linked List Operations Basic Operations of LL –appending a node –traversing the list –inserting a node –deleting a node –destroying the list

6 6 Class NumberList class NumberList { private: struct ListNode { double value; ListNode* next; }; ListNode* head; private: NumberList() {head = NULL;} ~NumberList(); void appendNode(double); void insertNode(double); void deleteNode(double); void displayList(); };

7 7 AppendNode void NumberList::appendNode(double num) { ListNode* newNode, *nodePtr; newNode = new ListNode; newNode -> value = num; newNode -> next = NULL; if(!head) //If there aren’t any nodes in list head = newNode; else { nodePtr = head; while(nodePtr->next) nodePtr = nodePtr->next; nodePtr -> next = newNode; }

8 8 Append 5 34Null Head newNode NodePtr

9 9 Append 5 34Null Head newNode NodePtr

10 10 Append 5 34 Null Head newNode NodePtr

11 11 Display List void NumberList::DisplayList() { ListNode* nodePtr; nodePtr = head; while(nodePtr) { cout value << endl; nodePtr = nodePtr->next; }

12 12 Display 534 Null Head NodePtr 3

13 13 Display 534 Null Head NodePtr 3434

14 14 Display 534 Null Head NodePtr 345345

15 15 Display 534 Null Head NodePtr 345345

16 16 Insert A Node void NumberList::insertNode(double num) { ListNode *newNode, *nodePtr, *previousNode; newNode = new ListNode; newNode -> value = num; if(!head) { head = newNode; newNode->next = NULL; } else { nodePtr = head; previousNode = NULL;

17 17 Insert A Node //Continued from previous slide while(nodePtr != NULL && nodePtr->value < num) { previousNode = nodePtr; nodePtr = nodePtr->next; } if(previousNode == NULL) //if insert as first { head = newNode; newNode -> next = nodePtr; } else { previousNode -> next = newNode; newNode -> next = nodePtr; }

18 18 Insert 534 Null Head NodePtr 4.5 newNode PreviousNode Null

19 19 Insert 534 Null Head NodePtr 4.5 newNode PreviousNode

20 20 Insert 534 Null Head NodePtr 4.5 newNode PreviousNode

21 21 Insert 534 Null Head NodePtr 4.5 newNode PreviousNode

22 22 Insert 534 Null Head NodePtr 4.5 newNode PreviousNode

23 23 Insert 534 Null Head NodePtr 4.5 newNode PreviousNode

24 24 Insert 534 Null Head NodePtr 4.5 newNode PreviousNode

25 25 Deleting A Node void NumberList::deleteNode(double num) { ListNode *nodePtr, *previousNode; if(!head) return; if(head->value == num) { nodePtr = head->next; delete head; head = nodePtr; } else { nodePtr = head; while(nodePtr != NULL && nodePtr->value != num) { previousNode = nodePtr; nodePtr = nodePtr->next; } if(nodePtr) { previousNode->next = nodePtr -> next; delete nodePtr; }

26 26 Delete 534 Null Head NodePtr PreviousNode Null num 4

27 27 Delete 534 Null Head NodePtr num 4 PreviousNode

28 28 Delete 534 Null Head NodePtr num 4 PreviousNode

29 29 Delete 534 Null Head NodePtr num 4 PreviousNode

30 30 Fini ?


Download ppt "1 CSE 2341 Object Oriented Programming with C++ Note Set #18."

Similar presentations


Ads by Google