powerpoint slides for the standard version of starting...
TRANSCRIPT
![Page 1: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/1.jpg)
Copyright 2003 Scott/Jones Publishing
Standard Version ofStarting Out with C++, 4th
Edition
Linked Lists
![Page 2: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/2.jpg)
Chapter 17 slide 2
Topics
• Introduction to the Linked List ADT• Linked List Operations• A Linked List Template• Variations of the Linked List• The STL list Container
![Page 3: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/3.jpg)
Chapter 17 slide 3
Introduction to the Linked List ADT
• Linked list: set of data structures (nodes) that contain references to other data structures
NULL
listhead
![Page 4: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/4.jpg)
Chapter 17 slide 4
Introduction to the Linked List ADT
• References may be addresses or array indices
• Data structures can be added to or removed from the linked list during execution
newNode
listhead NULL
![Page 5: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/5.jpg)
Chapter 17 slide 5
Linked Lists vs. Arrays and Vectors
• Linked lists can grow and shrink as needed, unlike arrays, which have a fixed size
• Linked lists can insert a node between other nodes easily
NULL
listhead
![Page 6: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/6.jpg)
Chapter 17 slide 6
Node Organization
• A node contains:– data: one or more data fields – may be
organized as structure, object, etc.– a pointer that can point to another node
datapointer
![Page 7: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/7.jpg)
Chapter 17 slide 7
Linked List Organization
• Linked list contains 0 or more nodes:
• Has a list head to point to first node• Last node points to NULL
NULL
listhead
![Page 8: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/8.jpg)
Chapter 17 slide 8
Empty List
• If a list currently contains 0 nodes, it is the empty list
• In this case the list head points to NULLlist
head
NULL
![Page 9: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/9.jpg)
Chapter 17 slide 9
Declaring a Node
• Declare a node:struct ListNode{
int data;ListNode *next;
};• No memory is allocated at this time
![Page 10: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/10.jpg)
Chapter 17 slide 10
Defining a Linked List
• Define a pointer for the head of the list:ListNode *head = NULL;
• Head pointer initialized to NULL to indicate an empty list
headNULL
![Page 11: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/11.jpg)
Chapter 17 slide 11
NULL Pointer
• Is used to indicate end-of-list• Should always be tested for before
using a pointer:ListNode *p;while (p != NULL) ...
• Can also test the pointer itself:while (!p) ... // same meaning
// as above
![Page 12: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/12.jpg)
Chapter 17 slide 12
Linked List Operations
• Basic operations:– append a node to the end of the list– insert a node within the list– traverse the linked list– delete a node– delete/destroy the list
![Page 13: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/13.jpg)
Chapter 17 slide 13
Create a New Node• Allocate memory for the new node:
newNode = new ListNode;
• Initialize the contents of the node:newNode->value = num;
• Set the pointer field to NULL:
newNode->next = NULL;
newNode
newNode
23
NULL23
newNode
![Page 14: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/14.jpg)
Chapter 17 slide 14
Appending a Node• Add a node to the end of the list• Basic process:
– Create the new node (as already described)– Add node to the end of the list:
• If list is empty, set head pointer to this node• Else,
– traverse the list to the end– set pointer of last node to point to new node
![Page 15: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/15.jpg)
Chapter 17 slide 15
Appending a Node
3 NULL19nodePtr
5 1
listhead
23 NULLnewNode
New node created, end of list located
![Page 16: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/16.jpg)
Chapter 17 slide 16
Appending a Node
5 13 19
23 NULL
nodePtr
listhead
newNode
New node added to end of list
![Page 17: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/17.jpg)
Chapter 17 slide 17
Inserting a Node into a Linked List
• Used to maintain a linked list in order• Requires two pointers to traverse the
list:– pointer to locate the node with data value
greater than that of node to be inserted– pointer to 'trail behind' one node, to point to
node before point of insertion• New node is inserted between the
nodes pointed at by these pointers
![Page 18: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/18.jpg)
Chapter 17 slide 18
Inserting a Node into a Linked List
NULL5 13 19
nodePtrpreviousNode
listhead
17 NULLnewNode
New node created, correct position located
![Page 19: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/19.jpg)
Chapter 17 slide 19
Inserting a Node into a Linked List
NULL5 13 19
17
nodePtrpreviousNode
listhead
newNode
New node inserted in order in the linked list
![Page 20: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/20.jpg)
Chapter 17 slide 20
Traversing a Linked List
• Visit each node in a linked list: display contents, validate data, etc.
• Basic process:– set a pointer to the contents of the head
pointer– while pointer is not NULL
• process data• go to the next node by setting the pointer to the
pointer field of the current node in the list– end while
![Page 21: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/21.jpg)
Chapter 17 slide 21
Traversing a Linked List
NULL5 13 19
nodePtr
listhead
nodePtr points to the node containing 5, then thenode containing 13, then the node containing 19,then points to NULL, and the list traversal stops
![Page 22: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/22.jpg)
Chapter 17 slide 22
Deleting a Node
• Used to remove a node from a linked list
• If list uses dynamic memory, then delete node from memory
• Requires two pointers: one to locate the node to be deleted, one to point to the node before the node to be deleted
![Page 23: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/23.jpg)
Chapter 17 slide 23
Deleting a Node
35 1
previousNode nodePtr
NULL19
listhead
Locating the node containing 13
![Page 24: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/24.jpg)
Chapter 17 slide 24
Deleting a Node
35 1
previousNode nodePtr
NULL19
listhead
Adjusting pointer around the node to be deleted
![Page 25: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/25.jpg)
Chapter 17 slide 25
Deleting a Node
5 1
previousNode nodePtr
NULL9
listhead
Linked list after deleting the node containing 13
![Page 26: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/26.jpg)
Chapter 17 slide 26
Destroying a Linked List
• Must remove all nodes used in the list
• To do this, use list traversal to visit each node
• For each node,– Unlink the node from the list
– If the list uses dynamic memory, then free the node’s memory
• Set the list head to NULL
![Page 27: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/27.jpg)
Chapter 17 slide 27
A Linked List Template
• When declaring a linked list, must specify the type of data to be held in each node
• Using templates, can declare a linked list that can hold data type determined at list definition time
![Page 28: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/28.jpg)
Chapter 17 slide 28
Variations of theLinked List
• Other linked list organizations:– doubly-linked list: each node contains two
pointers: one to the next node in the list, one to the previous node in the list
35 1
NULL
NULL19
listhead
![Page 29: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/29.jpg)
Chapter 17 slide 29
Variations of theLinked List
• Other linked list organizations:– circular linked list: the last node in the list
points back to the first node in the list, not to NULL
35 1 19
listhead
![Page 30: Powerpoint Slides for the Standard Version of Starting …cset.nsu.edu/csc372/notes/linkedlists.pdfAppending a Node • Add a node to the end of the list • Basic process: – Create](https://reader034.vdocument.in/reader034/viewer/2022042801/5a958d687f8b9a8b5d8d0ca8/html5/thumbnails/30.jpg)
Chapter 17 slide 30
The STL list Container
• Template for a doubly linked list• Member functions for
– locating beginning, end of list: front, back, end
– adding elements to the list: insert, merge, push_back, push_front
– removing elements from the list: erase, pop_back, pop_front, unique