CSE 2341 Object Oriented Programming with C++ Note Set #18
-
Upload
salvador-henson -
Category
Documents
-
view
28 -
download
0
description
Transcript of CSE 2341 Object Oriented Programming with C++ Note Set #18
![Page 1: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/1.jpg)
1
CSE 2341Object Oriented Programming
with C++
Note Set #18
![Page 2: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/2.jpg)
2
Overview
• Dynamic Data structures with linked lists
![Page 3: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/3.jpg)
3
Linked List
• Series of connected nodes• Can grow/shrink at runtime
– dynamic allocation of nodes allows for this
Data
Null
Head
![Page 4: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/4.jpg)
4
Linked List Node
Data
struct ListNode{
double data;ListNode* next;
};
ListNode is a self referential data structure.
![Page 5: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/5.jpg)
5
Basic Linked List Operations
• Basic Operations of LL– appending a node– traversing the list– inserting a node– deleting a node– destroying the list
![Page 6: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/6.jpg)
6
Class NumberListclass 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();};
![Page 7: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/7.jpg)
7
AppendNodevoid 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 listhead = newNode;
else {
nodePtr = head;while(nodePtr->next)
nodePtr = nodePtr->next;nodePtr -> next = newNode;
}}
![Page 8: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/8.jpg)
8
Append
5
3 4 Null
Null
Head
newNode
NodePtr
![Page 9: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/9.jpg)
9
Append
5
3 4 Null
Null
Head
newNode
NodePtr
![Page 10: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/10.jpg)
10
Append
5
3 4
Null
Head
newNode
NodePtr
![Page 11: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/11.jpg)
11
Display List
void NumberList::DisplayList(){ ListNode* nodePtr; nodePtr = head; while(nodePtr) {
cout << nodePtr->value << endl;nodePtr = nodePtr->next;
}}
![Page 12: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/12.jpg)
12
Display
53 4 Null
Head
NodePtr
3
![Page 13: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/13.jpg)
13
Display
53 4 Null
Head
NodePtr
34
![Page 14: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/14.jpg)
14
Display
53 4 Null
Head
NodePtr
345
![Page 15: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/15.jpg)
15
Display
53 4 Null
Head
NodePtr
345
![Page 16: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/16.jpg)
16
Insert A Nodevoid 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;
![Page 17: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/17.jpg)
17
Insert A Node//Continued from previous slidewhile(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;}
}}
![Page 18: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/18.jpg)
18
Insert
53 4 NullHead
NodePtr
4.5
newNode
PreviousNode
Null
![Page 19: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/19.jpg)
19
Insert
53 4 NullHead
NodePtr
4.5
newNode
PreviousNode
![Page 20: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/20.jpg)
20
Insert
53 4 NullHead
NodePtr
4.5
newNode
PreviousNode
![Page 21: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/21.jpg)
21
Insert
53 4 NullHead
NodePtr
4.5
newNode
PreviousNode
![Page 22: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/22.jpg)
22
Insert
53 4 NullHead
NodePtr
4.5
newNode
PreviousNode
![Page 23: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/23.jpg)
23
Insert
53 4 NullHead
NodePtr
4.5
newNode
PreviousNode
![Page 24: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/24.jpg)
24
Insert
53 4 NullHead
NodePtr
4.5
newNode
PreviousNode
![Page 25: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/25.jpg)
25
Deleting A Nodevoid 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;
} }}
![Page 26: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/26.jpg)
26
Delete
53 4 NullHead
NodePtr
PreviousNode
Null
num4
![Page 27: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/27.jpg)
27
Delete
53 4 NullHead
NodePtr
num4
PreviousNode
![Page 28: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/28.jpg)
28
Delete
53 4 NullHead
NodePtr
num4
PreviousNode
![Page 29: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/29.jpg)
29
Delete
53 4 NullHead
NodePtr
num4
PreviousNode
![Page 30: CSE 2341 Object Oriented Programming with C++ Note Set #18](https://reader035.fdocuments.us/reader035/viewer/2022062721/568138a5550346895da064a1/html5/thumbnails/30.jpg)
30
Fini
?