Download presentation
Presentation is loading. Please wait.
Published byDerrick Hodge Modified over 8 years ago
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 ?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.