SlideShare a Scribd company logo
1 of 40
Linked Lists
Visit for more Learning Resources
Linked Lists
 A linked list is a linear collection of data elements,
called nodes, where the linear order is given by
means of pointers.
 Each node is divided into two parts:
 The first part contains the information of the element and
 The second part contains the address of the next node (link
/next pointer field) in the list.
Linked Lists
info next
list
info next info next
Linear linked list
null
Adding an Element to the front of a Linked List
5
info next
list
info next info next
3 8 null
Some Notations for use in algorithm (Not in C
programs)
 p: is a pointer
 node(p): the node pointed to by p
 info(p): the information portion of the node
 next(p): the next address portion of the node
 getnode(): obtains an empty node
 freenode(p): makes node(p) available for reuse even
if the value of the pointer p is changed.
Adding an Element to the front of a Linked List
5
info next
list
info next info next
3 8
info next
p p = getnode()
null
Adding an Element to the front of a Linked List
5
info next
list
info next info next
3 8
info next
p 6 info(p) = 6
null
Adding an Element to the front of a Linked List
5
info next info next info next
3 8
info next
p 6
list
next(p) = list
null
Adding an Element to the front of a Linked List
5
info next info next info next
3 8
info next
6
p
list list = p
null
Adding an Element to the front of a Linked List
5
info next info next info next
3 8
info next
list 6 null
Removing an Element from the front of a Linked
List
5
info next info next info next
3 8
info next
list 6 null
Removing an Element from the front of a Linked
List
5
info next info next info next
3 8
info next
6
list
p
p = list
null
Removing an Element from the front of a Linked
List
5
info next info next info next
3 8
info next
6
list
p list = next(p)
null
Removing an Element from the front of a Linked
List
5
info next info next info next
3 8
info next
6
list
p x = info(p)
x = 6
null
Removing an Element from the front of a Linked
List
5
info next info next info next
3 8
info next
p
x = 6
freenode(p)
list null
Removing an Element from the front of a Linked
List
5
info next info next info next
3 8
list
x = 6 null
Linked List Implementation of Stacks –
PUSH(S,X)
 The first node of the list is the top of the stack. If an
external pointer s points to such a linked list, the
operation push(s,x) may be implemented by
p=getnode();
info(p)=x;
next(p)=s;
s=p;
Linked List Implementation of Stacks – POP(S)
 The operation x=pop(s) removes the first node from a nonempty list
and signals underflow if the list is empty:
if (empty(s)){ /* checks whether s equals null */
printf(‘stack underflow’);
exit(1);
}
else {
p =s;
s=next(p);
x = info(p);
freenode(p);
}
Linked List Implemantation of QUEUES
5
info next info next info next
3 8
info next
6
front null
rear
5
info next info next info next
3 8
info next
6
front
info next
null
rear
12
Linked List Implemantation of QUEUES
 A queue q consists of a list and two pointers, q.front and q.rear. The operations
empty(q) and x=remove(q) are completely analogous to empty(s) and x=pop(s),
with the pointer q.front replacing s.
if(empty(q)){
printf(“queue undeflow”);
exit(1);
}
p=q.front;
x=info(p);
q.front=next(p);
if(q.front==null)
q.rear=null;
freenode(p);
return(x);
Linked List Implemantation of QUEUES
 The operation insert(q,x) is implemented by
p= getnode();
info(p)=x;
next(p)=null;
if(q.front==null)
q.front=p;
else
next(q.rear)=p;
q.rear=p;
Linked List as a Data Structure
 An item is accesses in a linked list by traversing the
list from its beginning.
 An array implementation allows acccess to the nth
item in a group using single operation, whereas a list
implementation requires n operations.
 The advantage of a list over an array occurs when it
is necessary to insert or delete an element in the
middle of a group of other elements.
Element x is inserted between the third an fourth
elements in an array
X0
X1
X2
X3
X4
X5
X6
X0
X1
X2
X3
X4
X5
X6
X0
X1
X2
X3
X4
X5
X6
x
Inserting an item x into a list after a node pointed
to by p
X0 X1 X2 X3 X4 X5 X6 null
list
X0 X1 X2 X3 X4 X5 X6 null
list
p
p
x
q
Inserting an item x into a list after a node pointed
to by p
q=getnode();
info(q)=x;
next(q)=next(p);
next(p)=q;
Deleting an item x from a list after a node
pointed to by p
X0 X1 X2 X3 X4 X5 X6 null
list
p q
X0 X1 X2 X4 X5 X6 null
list
p
x =X3
X3
Deleting an item x from a list after a node
pointed to by p
q=next(p);
x=info(q);
next(p)=next(q);
freenode(q);
LINKED LISTS USING DYNAMIC VARIABLES
 In array implementation of the linked lists a fixed set of nodes represented
by an array is established at the beginning of the execution
 A pointer to a node is represented by the relative position of the node
within the array.
 In array implementation, it is not possible to determine the number of
nodes required for the linked list. Therefore;
 Less number of nodes can be allocated which means that the program will have
overflow problem.
 More number of nodes can be allocated which means that some amount of the
memory storage will be wasted.
 The solution to this problem is to allow nodes that are dynamic, rather
than static.
 When a node is required storage is reserved/allocated for it and when a
node is no longerneeded, the memory storage is released/freed.
ALLOCATING AND FREEING DYNAMIC
VARIABLES
 C library function malloc() is used for dynamically
allocating a space to a pointer. Note that the malloc() is
a library function in <stdlib.h> header file.
 The following lines allocate an integer space from the
memory pointed by the pointer p.
int *p;
p = (int *) malloc(sizeof(int));
 Note that sizeof() is another library function that returns the
number of bytes required for the operand. In this example, 4
bytes for the int.
ALLOCATING AND FREEING DYNAMIC
VARIABLES
 Allocate floating point number space for a float
pointer f.
float *f;
f = (float *) malloc(sizeof(float));
Question:What is the output of the following
lines?
int *p, *q;
int x;
p = (int *) malloc(sizeof(int));
*p = 3;
x = 6;
q = (int *) malloc(sizeof(int));
*q=x;
printf(“%d %d n”, *p, *q);
 The above lines will print 3 and 6.
p
p 3
6
x
q
q 6
malloc() and free()
The following lines and the proceeding figure shows the
effectiveness of the free() function.
int *p, *q;
p = (int *) malloc(sizeof(int));
*p = 5;
q = (int *) malloc(sizeof(int));
*q = 8;
free(p);
p = q;
q = (int *) malloc(sizeof(int));
*q = 6;
printf(“%d %d n”, *p, *q);
LINKED LISTS STRUCTURES AND BASIC
FUNCTIONS
 The value zero can be used in a C program as the null pointer. You can
use the following line to declare the NULL constant. Note that a NULL
pointer is considered NOT to point any storage location.
#define NULL 0
 The following node structure can be used to implement Linked Lists.
Note that the info field, which can be some other data type (not
necessarily int), keeps the data of the node and the pointer next links
the node to the next node in the Linked List.
struct node{
int info;
struct node *next;
};
typedef struct node *NODEPTR;
LINKED LISTS STRUCTURES AND BASIC
FUNCTIONS
 When a new node is required (e.g. to be inserted into
the list) the following function, getnode, can be used
to make a new node to be available for the list.
NODEPTR getnode(void)
{
NODEPTR p;
p = (NODEPTR) malloc(sizeof(struct node));
return p;
}
LINKED LISTS STRUCTURES AND BASIC
FUNCTIONS
When a new node is no longer used (e.g. to be
deleted from the list) the following function,
freenode, can be used to release the node back to
the memory.
void freenode(NODEPTR p)
{
free(p);
}
PRIMITIVE FUNCTIONS FOR LINEAR LINKED
LISTS
 The following functions insertafter(p,x) and
delafter(p,px) are primitive functions that can be
used for the dynamic implementation of a linked list.
Assume that list is a pointer variable pointing the
first node of a list (if any) and equals NULL in the
case of an empty list.
void insertafter(NODEPTR p, int x)
{
NODEPTR q;
if(p == NULL){
printf("void insertionn");
exit(1);
}
q=getnode();
q->info = x;
q->next = p->next;
p->next = q;
}
void delafter(NODEPTR p , int *px)
{
NODEPTR q;
if((p == NULL) || (p->next == NULL)){
printf("void deletionn");
exit(1);
}
q = p->next;
*px = q->info;
p->next = q->next;
freenode(q);
}
Searching through the linked list.
 The following function searches through the linked
list and returns a pointer the first occurrence of the
search key or returns NULL pointer if the search key
is not in the list. Note that the linked list contains
integer data items.
NODEPTR searchList(NODEPTR plist, int key)
{
NODEPTR p;
p = plist;
while(p != NULL){
if(p->info == key)
return p;
p = p->next;
}
return NULL;
}
For more detail contact us

More Related Content

Similar to CH5_Linked List.ppt

Stacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti AroraStacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti Arorakulachihansraj
 
Stacks & Queues
Stacks & QueuesStacks & Queues
Stacks & Queuestech4us
 
Stacks queues-1220971554378778-9
Stacks queues-1220971554378778-9Stacks queues-1220971554378778-9
Stacks queues-1220971554378778-9Getachew Ganfur
 
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...Balwant Gorad
 
Homework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdf
Homework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdfHomework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdf
Homework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdfezzi97
 
STACK, LINKED LIST ,AND QUEUE
STACK, LINKED LIST ,AND QUEUESTACK, LINKED LIST ,AND QUEUE
STACK, LINKED LIST ,AND QUEUEDev Chauhan
 
Array linked list.ppt
Array  linked list.pptArray  linked list.ppt
Array linked list.pptWaf1231
 
Unit ii(dsc++)
Unit ii(dsc++)Unit ii(dsc++)
Unit ii(dsc++)Durga Devi
 
C++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdf
C++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdfC++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdf
C++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdfcallawaycorb73779
 
C++ Please test your program before you submit the answer.pdf
C++ Please test your program before you submit the answer.pdfC++ Please test your program before you submit the answer.pdf
C++ Please test your program before you submit the answer.pdfaashisha5
 

Similar to CH5_Linked List.ppt (20)

03-Lists.ppt
03-Lists.ppt03-Lists.ppt
03-Lists.ppt
 
Adt of lists
Adt of listsAdt of lists
Adt of lists
 
Stacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti AroraStacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti Arora
 
Stacks & Queues
Stacks & QueuesStacks & Queues
Stacks & Queues
 
DS Unit 2.ppt
DS Unit 2.pptDS Unit 2.ppt
DS Unit 2.ppt
 
Stacks queues-1220971554378778-9
Stacks queues-1220971554378778-9Stacks queues-1220971554378778-9
Stacks queues-1220971554378778-9
 
Rana Junaid Rasheed
Rana Junaid RasheedRana Junaid Rasheed
Rana Junaid Rasheed
 
Linked lists
Linked listsLinked lists
Linked lists
 
Linked list
Linked listLinked list
Linked list
 
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
 
Linked list
Linked listLinked list
Linked list
 
Data structures
Data structuresData structures
Data structures
 
List
ListList
List
 
Homework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdf
Homework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdfHomework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdf
Homework 05 - Linked Lists (C++)(1) Implement the concepts of a un.pdf
 
STACK, LINKED LIST ,AND QUEUE
STACK, LINKED LIST ,AND QUEUESTACK, LINKED LIST ,AND QUEUE
STACK, LINKED LIST ,AND QUEUE
 
Array linked list.ppt
Array  linked list.pptArray  linked list.ppt
Array linked list.ppt
 
Unit ii(dsc++)
Unit ii(dsc++)Unit ii(dsc++)
Unit ii(dsc++)
 
C++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdf
C++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdfC++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdf
C++ problemPart 1 Recursive Print (40 pts)Please write the recu.pdf
 
Abstract data types
Abstract data typesAbstract data types
Abstract data types
 
C++ Please test your program before you submit the answer.pdf
C++ Please test your program before you submit the answer.pdfC++ Please test your program before you submit the answer.pdf
C++ Please test your program before you submit the answer.pdf
 

More from ArifKamal36

03-arrays-pointers.ppt
03-arrays-pointers.ppt03-arrays-pointers.ppt
03-arrays-pointers.pptArifKamal36
 
html-lists-tables.ppt
html-lists-tables.ppthtml-lists-tables.ppt
html-lists-tables.pptArifKamal36
 
Basic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptxBasic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptxArifKamal36
 
Lecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptxLecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptxArifKamal36
 
topic11LinkedLists.ppt
topic11LinkedLists.ppttopic11LinkedLists.ppt
topic11LinkedLists.pptArifKamal36
 
IAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptxIAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptxArifKamal36
 

More from ArifKamal36 (14)

03-arrays-pointers.ppt
03-arrays-pointers.ppt03-arrays-pointers.ppt
03-arrays-pointers.ppt
 
html-lists-tables.ppt
html-lists-tables.ppthtml-lists-tables.ppt
html-lists-tables.ppt
 
HTMLTables.ppt
HTMLTables.pptHTMLTables.ppt
HTMLTables.ppt
 
Basic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptxBasic-HTML.9526794.powerpoint.pptx
Basic-HTML.9526794.powerpoint.pptx
 
Lecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptxLecture 1. Data Structure & Algorithm.pptx
Lecture 1. Data Structure & Algorithm.pptx
 
DS1.pptx
DS1.pptxDS1.pptx
DS1.pptx
 
topic11LinkedLists.ppt
topic11LinkedLists.ppttopic11LinkedLists.ppt
topic11LinkedLists.ppt
 
3.ppt
3.ppt3.ppt
3.ppt
 
3.ppt
3.ppt3.ppt
3.ppt
 
1.ppt
1.ppt1.ppt
1.ppt
 
Games.ppt
Games.pptGames.ppt
Games.ppt
 
IAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptxIAT334-Lec01-Intro.pptx
IAT334-Lec01-Intro.pptx
 
9916167.ppt
9916167.ppt9916167.ppt
9916167.ppt
 
e3-chap-01.ppt
e3-chap-01.ppte3-chap-01.ppt
e3-chap-01.ppt
 

Recently uploaded

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

CH5_Linked List.ppt

  • 1. Linked Lists Visit for more Learning Resources
  • 2. Linked Lists  A linked list is a linear collection of data elements, called nodes, where the linear order is given by means of pointers.  Each node is divided into two parts:  The first part contains the information of the element and  The second part contains the address of the next node (link /next pointer field) in the list.
  • 3. Linked Lists info next list info next info next Linear linked list null
  • 4. Adding an Element to the front of a Linked List 5 info next list info next info next 3 8 null
  • 5. Some Notations for use in algorithm (Not in C programs)  p: is a pointer  node(p): the node pointed to by p  info(p): the information portion of the node  next(p): the next address portion of the node  getnode(): obtains an empty node  freenode(p): makes node(p) available for reuse even if the value of the pointer p is changed.
  • 6. Adding an Element to the front of a Linked List 5 info next list info next info next 3 8 info next p p = getnode() null
  • 7. Adding an Element to the front of a Linked List 5 info next list info next info next 3 8 info next p 6 info(p) = 6 null
  • 8. Adding an Element to the front of a Linked List 5 info next info next info next 3 8 info next p 6 list next(p) = list null
  • 9. Adding an Element to the front of a Linked List 5 info next info next info next 3 8 info next 6 p list list = p null
  • 10. Adding an Element to the front of a Linked List 5 info next info next info next 3 8 info next list 6 null
  • 11. Removing an Element from the front of a Linked List 5 info next info next info next 3 8 info next list 6 null
  • 12. Removing an Element from the front of a Linked List 5 info next info next info next 3 8 info next 6 list p p = list null
  • 13. Removing an Element from the front of a Linked List 5 info next info next info next 3 8 info next 6 list p list = next(p) null
  • 14. Removing an Element from the front of a Linked List 5 info next info next info next 3 8 info next 6 list p x = info(p) x = 6 null
  • 15. Removing an Element from the front of a Linked List 5 info next info next info next 3 8 info next p x = 6 freenode(p) list null
  • 16. Removing an Element from the front of a Linked List 5 info next info next info next 3 8 list x = 6 null
  • 17. Linked List Implementation of Stacks – PUSH(S,X)  The first node of the list is the top of the stack. If an external pointer s points to such a linked list, the operation push(s,x) may be implemented by p=getnode(); info(p)=x; next(p)=s; s=p;
  • 18. Linked List Implementation of Stacks – POP(S)  The operation x=pop(s) removes the first node from a nonempty list and signals underflow if the list is empty: if (empty(s)){ /* checks whether s equals null */ printf(‘stack underflow’); exit(1); } else { p =s; s=next(p); x = info(p); freenode(p); }
  • 19. Linked List Implemantation of QUEUES 5 info next info next info next 3 8 info next 6 front null rear 5 info next info next info next 3 8 info next 6 front info next null rear 12
  • 20. Linked List Implemantation of QUEUES  A queue q consists of a list and two pointers, q.front and q.rear. The operations empty(q) and x=remove(q) are completely analogous to empty(s) and x=pop(s), with the pointer q.front replacing s. if(empty(q)){ printf(“queue undeflow”); exit(1); } p=q.front; x=info(p); q.front=next(p); if(q.front==null) q.rear=null; freenode(p); return(x);
  • 21. Linked List Implemantation of QUEUES  The operation insert(q,x) is implemented by p= getnode(); info(p)=x; next(p)=null; if(q.front==null) q.front=p; else next(q.rear)=p; q.rear=p;
  • 22. Linked List as a Data Structure  An item is accesses in a linked list by traversing the list from its beginning.  An array implementation allows acccess to the nth item in a group using single operation, whereas a list implementation requires n operations.  The advantage of a list over an array occurs when it is necessary to insert or delete an element in the middle of a group of other elements.
  • 23. Element x is inserted between the third an fourth elements in an array X0 X1 X2 X3 X4 X5 X6 X0 X1 X2 X3 X4 X5 X6 X0 X1 X2 X3 X4 X5 X6 x
  • 24. Inserting an item x into a list after a node pointed to by p X0 X1 X2 X3 X4 X5 X6 null list X0 X1 X2 X3 X4 X5 X6 null list p p x q
  • 25. Inserting an item x into a list after a node pointed to by p q=getnode(); info(q)=x; next(q)=next(p); next(p)=q;
  • 26. Deleting an item x from a list after a node pointed to by p X0 X1 X2 X3 X4 X5 X6 null list p q X0 X1 X2 X4 X5 X6 null list p x =X3 X3
  • 27. Deleting an item x from a list after a node pointed to by p q=next(p); x=info(q); next(p)=next(q); freenode(q);
  • 28. LINKED LISTS USING DYNAMIC VARIABLES  In array implementation of the linked lists a fixed set of nodes represented by an array is established at the beginning of the execution  A pointer to a node is represented by the relative position of the node within the array.  In array implementation, it is not possible to determine the number of nodes required for the linked list. Therefore;  Less number of nodes can be allocated which means that the program will have overflow problem.  More number of nodes can be allocated which means that some amount of the memory storage will be wasted.  The solution to this problem is to allow nodes that are dynamic, rather than static.  When a node is required storage is reserved/allocated for it and when a node is no longerneeded, the memory storage is released/freed.
  • 29. ALLOCATING AND FREEING DYNAMIC VARIABLES  C library function malloc() is used for dynamically allocating a space to a pointer. Note that the malloc() is a library function in <stdlib.h> header file.  The following lines allocate an integer space from the memory pointed by the pointer p. int *p; p = (int *) malloc(sizeof(int));  Note that sizeof() is another library function that returns the number of bytes required for the operand. In this example, 4 bytes for the int.
  • 30. ALLOCATING AND FREEING DYNAMIC VARIABLES  Allocate floating point number space for a float pointer f. float *f; f = (float *) malloc(sizeof(float));
  • 31. Question:What is the output of the following lines? int *p, *q; int x; p = (int *) malloc(sizeof(int)); *p = 3; x = 6; q = (int *) malloc(sizeof(int)); *q=x; printf(“%d %d n”, *p, *q);  The above lines will print 3 and 6. p p 3 6 x q q 6
  • 32. malloc() and free() The following lines and the proceeding figure shows the effectiveness of the free() function. int *p, *q; p = (int *) malloc(sizeof(int)); *p = 5; q = (int *) malloc(sizeof(int)); *q = 8; free(p); p = q; q = (int *) malloc(sizeof(int)); *q = 6; printf(“%d %d n”, *p, *q);
  • 33. LINKED LISTS STRUCTURES AND BASIC FUNCTIONS  The value zero can be used in a C program as the null pointer. You can use the following line to declare the NULL constant. Note that a NULL pointer is considered NOT to point any storage location. #define NULL 0  The following node structure can be used to implement Linked Lists. Note that the info field, which can be some other data type (not necessarily int), keeps the data of the node and the pointer next links the node to the next node in the Linked List. struct node{ int info; struct node *next; }; typedef struct node *NODEPTR;
  • 34. LINKED LISTS STRUCTURES AND BASIC FUNCTIONS  When a new node is required (e.g. to be inserted into the list) the following function, getnode, can be used to make a new node to be available for the list. NODEPTR getnode(void) { NODEPTR p; p = (NODEPTR) malloc(sizeof(struct node)); return p; }
  • 35. LINKED LISTS STRUCTURES AND BASIC FUNCTIONS When a new node is no longer used (e.g. to be deleted from the list) the following function, freenode, can be used to release the node back to the memory. void freenode(NODEPTR p) { free(p); }
  • 36. PRIMITIVE FUNCTIONS FOR LINEAR LINKED LISTS  The following functions insertafter(p,x) and delafter(p,px) are primitive functions that can be used for the dynamic implementation of a linked list. Assume that list is a pointer variable pointing the first node of a list (if any) and equals NULL in the case of an empty list.
  • 37. void insertafter(NODEPTR p, int x) { NODEPTR q; if(p == NULL){ printf("void insertionn"); exit(1); } q=getnode(); q->info = x; q->next = p->next; p->next = q; }
  • 38. void delafter(NODEPTR p , int *px) { NODEPTR q; if((p == NULL) || (p->next == NULL)){ printf("void deletionn"); exit(1); } q = p->next; *px = q->info; p->next = q->next; freenode(q); }
  • 39. Searching through the linked list.  The following function searches through the linked list and returns a pointer the first occurrence of the search key or returns NULL pointer if the search key is not in the list. Note that the linked list contains integer data items.
  • 40. NODEPTR searchList(NODEPTR plist, int key) { NODEPTR p; p = plist; while(p != NULL){ if(p->info == key) return p; p = p->next; } return NULL; } For more detail contact us