0% found this document useful (0 votes)
15 views

Linked List

This document discusses different types of linked lists, including their structure and how to perform basic operations like insertion and deletion. It introduces linked lists and their flexibility compared to arrays. Key types are singly linked, circular, and doubly linked lists. Insertion involves adding a new node between two existing nodes. Deletion removes a node by adjusting the next pointer of the preceding node.

Uploaded by

isaddu7860
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Linked List

This document discusses different types of linked lists, including their structure and how to perform basic operations like insertion and deletion. It introduces linked lists and their flexibility compared to arrays. Key types are singly linked, circular, and doubly linked lists. Insertion involves adding a new node between two existing nodes. Deletion removes a node by adjusting the next pointer of the preceding node.

Uploaded by

isaddu7860
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 13

Linked List

Topics Covered
• Introduction to Linked List
• Insertion in linked list
• Deletion from Linked List
• Circular Linked List
• Doubly Linked List
Introduction
• A linked list is a data structure which can change
during execution.
– Successive elements are connected by pointers.
– Last element points to NULL.
– It can grow or shrink in size during execution of a
program.
– It can be made just as long as required.
head
– It does not waste memory space.

A B C
• Keeping track of a linked list:
– Must know the pointer to the first element of the
list (called start, head, etc.).

• Linked lists provide flexibility in allowing the


items to be rearranged efficiently.
– Insert an element.
– Delete an element.
Illustration: Insertion
A B C

Item to be
tmp X inserted

A B C

curr
X
Pseudo-code for insertion
typedef struct nd {
struct item data;
struct nd * next;
} node;

void insert(node *curr)


{
node * tmp;

tmp=(node *) malloc(sizeof(node));
tmp->next=curr->next;
curr->next=tmp;
}
Illustration: Deletion
Item to be deleted

A B C

tmp
curr

A B C
Pseudo-code for deletion
typedef struct nd {
struct item data;
struct nd * next;
} node;

void delete(node *curr)


{
node * tmp;
tmp=curr->next;
curr->next=tmp->next;
free(tmp);
}
In essence ...
• For insertion:
– A record is created holding the new item.
– The next pointer of the new record is set to link it to
the item which is to follow it in the list.
– The next pointer of the item which is to precede it
must be modified to point to the new item.
• For deletion:
– The next pointer of the item immediately preceding
the one to be deleted is altered, and made to point
to the item following the deleted item.
Array versus Linked Lists
• Arrays are suitable for:
– Inserting/deleting an element at the end.
– Randomly accessing any element.
– Searching the list for a particular value.
• Linked lists are suitable for:
– Inserting an element.
– Deleting an element.
– Applications where sequential access is required.
– In situations where the number of elements cannot
be predicted beforehand.
Types of Lists
• Depending on the way in which the links are
used to maintain adjacency, several different
types of linked lists are possible.

– Linear singly-linked list (or simply linear list)


head
• One we have discussed so far.

A B C
– Circular linked list
• The pointer from the last element in the list points back
to the first element.
head

A B C
– Doubly linked list
• Pointers exist between adjacent nodes in both
directions.
• The list can be traversed either forward or backward.
• Usually two pointers are maintained to keep track of
the list, head and tail.
head tail

A B C

You might also like