Professional Documents
Culture Documents
struct node {
int data;
struct node *nextPtr;
};
nextPtr
Points to an object of type node
Referred to as a link
Linked Lists
Types of linked lists:
Singly linked list
Begins with a pointer to the first node
Terminates with a null pointer
Only traversed in one direction
Circular, singly linked
Pointer in the last node points
back to the first node
Doubly linked list
Two “start pointers” – first element and last element
Each node has a forward pointer and a backward pointer
Allows traversals both forwards and backwards
Circular, doubly linked list
Forward pointer of the last node points to the first node and
backward pointer of the first node points to the last node
Linked Representation of Data
358 797
561
In a linked representation, data is 345
501 724
not stored in a contiguous manner.
Instead, data is stored at random 555 490 701
locations and the current data 513
location provides the information
regarding the location of the next
data. 358 797
561 501
345 724
START Node
Element
Data Pointer (Link) Null Pointer
Field Field
struct node {
int data;
1 300 5
struct node *link;
};
2 500 0 NULL
struct node my_node;
3
3 100 4
Example:
4 200 1
5 400 2
Conventions of Linked List
There are several conventions for the link to indicate the
end of the list.
1. a null link that points to no node (0 or NULL)
2. a dummy node that contains no item
3. a reference back to the first node, making it a
circular list.
Singly Linked List
10
1000 20
2000 30
3000 40
4000 00
START Data Link
PTR = LINK[PTR]
PTR
Search for an Item
Search for an ITEM
Let START be a pointer to a linked list in memory. Write an algorithm
that finds the location LOC of the node where ITEM first appears in
the list, or sets LOC=NULL if search is unsuccessful.
Algorithm:
SEARCH (DATA, LINK, START, ITEM, LOC)
1. set PTR = START
2. repeat step 3 while PTR NULL
3. if ITEM == PTR -> DATA, then
4. set LOC = PTR, and Exit
5. else
6. set PTR = PTR -> LINK
7. set LOC = NULL /*search unsuccessful */
8. Stop
PTR = LINK[PTR]
PTR
Insert an Item
Insertion into a Listed List
Let START be a pointer to a linked list in memory with successive
nodes A and B. Write an algorithm to insert node N between
nodes A and B.
START Node A Node B
Algorithm: 1000 2000 3000 4000 5000
10. Stop
3 cases: first node, last node, in-between node. (ex: if ITEM = 500? if ITEM = 6000?)
Delete an Item
Deletion from a Linked List
Let START be a pointer to a linked list in memory that contains integer data. Write
an algorithm to delete note which contains ITEM.
Algorithm
DELETE (DATA, LINK, START, ITEM)
1. Set PTR=START and TEMP = START
2. Repeat step 3 while PTR NULL
3. If PTR->DATA == ITEM, then
4. Set TEMP->LINK = PTR -> LINK, exit
5. else
6. TEMP = PTR START Node A Node N Node B
7. PTR = PTR -> LINK 1000 2000 3000 3500 4000 5000
8. Stop
3 cases: first node, last node, in-between node. (ex: if ITEM = 1000? if ITEM = 5000?)
Header Linked Lists
Header linked list is a linked list which always contains a
special node called the Header Node, at the beginning of
the list.
It has two types:
a) Grounded Header List
Last Node Contains the NULL Pointer
b) Circular Header List
Last Node Points Back to the Header Node
Header linked list
13
Grounded Header Link List
A grounded header list is a header list where the last
node contains the null pointer.
The term “grounded” comes from the fact that many
texts use the electrical ground symbol to indicate the
null pointer.
Start
Header Node
BACK Pointer
FORE Pointer
INFO Field
Thank You