






Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
data structure lecture notes for Btech 3rd sem
Typology: Lecture notes
1 / 12
This page cannot be seen from the preview
Don't miss anything!
A linked list is a sequence of data structures, which are connected together via links.
Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.
Linked list can be visualized as a chain of nodes, where every node points to the next node.
As per the above illustration, following are the important points to be considered.
Following are the various types of linked list.
Following are the basic operations supported by a list.
Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.
Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −
NewNode.next −> RightNode; It should look like this −
The left (previous) node of the target node now should point to the next node of the target node −
LeftNode.next −> TargetNode.next;
This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.
TargetNode.next −> NULL;
We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.
This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.
First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −
We have to make sure that the last node is not the lost node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.
Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.
We'll make the head node point to the new first node by using the temp node.
Following code demonstrates the insertion operation at the beginning of a doubly linked list.
//insert link at the first location
void insertFirst(int key, int data) {
//create a link struct node link = (struct node) malloc(sizeof(struct node)); link->key = key; link->data = data;
if(isEmpty()) { //make it the last link last = link; } else { //update first prev link head->prev = link; }
//point it to old first link link->next = head;
//point first to new first link
head = link;
}
Following code demonstrates the deletion operation at the beginning of a doubly linked list.
//delete first item
struct node* deleteFirst() {
//save reference to first link struct node *tempLink = head;
//if only one link if(head->next == NULL) { last = NULL; } else { head->next->prev = NULL; }
head = head->next;
//return the deleted link return tempLink;
}
Following code demonstrates the insertion operation at the last position of a doubly linked list.
//insert link at the last location
void insertLast(int key, int data) {
//create a link struct node link = (struct node) malloc(sizeof(struct node)); link->key = key;
As per the above illustration, following are the important points to be considered.
Following are the important operations supported by a circular list.
Following code demonstrates the insertion operation in a circular linked list based on single linked list.
//insert link at the first location
void insertFirst(int key, int data) {
//create a link struct node link = (struct node) malloc(sizeof(struct node)); link->key = key; link->data= data;
if (isEmpty()) { head = link; head->next = head; } else { //point it to old first node link->next = head;
//point first to new first node head = link; }
}
Following code demonstrates the deletion operation in a circular linked list based on single linked list.
//delete first item
struct node * deleteFirst() {
//save reference to first link struct node *tempLink = head;
if(head->next == head) { head = NULL; return tempLink; }
//mark next to first link as first head = head->next;
//return the deleted link return tempLink;
}
Following code demonstrates the display list operation in a circular linked list.
//display the list
void printList() {
struct node *ptr = head; printf("\n[ ");
//start from the beginning if(head != NULL) { while(ptr->next != ptr) {