×

Types of Linked list

Single linked list 

A single linked list is a linked list in which all nodes are connected with each other in sequence. Each node of a singly linked list has two fields. The first field is used to store the data, and the second field is used to link or pointer to the next field.

Types of Linked list

Doubly linked list

The doubly linked list is also called a two-way list in which every node is divided into three fields.

  1. The first field of the linked list is called the previous pointer field, which holds the address of the previous element of the list.
  2. The second field of the linked list stores the information.
  3. The third field of the linked list is called next pointer, which points to the next element of the linked list.

Two pointer variables are used in the doubly linked list which contains the address of the first element of the list and the last element of the list. If the previous part of the first element of the linked list remains NULL, that it indicates that there is no other node behind this node. If the next part of the last element of the linked list remains NULL,it indicates that there is no node next to it. The doubly link list can be traversed in both directions.

Suppose user wants to store integer value in linked list. For this, the doubly linked list structure must be in memory, so the structure will define.

Node Structure:

struct node
 { 
int info; 
struct node * prev, *next;
};  

Insert a node at the beginning

This algorithm is for adding a new node at the beginning:

Step 1: Allocate the memory for the new node.   struct node* new = malloc(size of ( struct node)) 
Step 2: Enter the address of the head in a temporary variable.      struct node* temp= head 
Step 3: Insert the data item into the information part of the new node.      New -> info = item 
Step 4: NULL the previous part of the new node.         New -> prev = NULL 
Step 5: Enter the head address in the next part of the new node.          New -> next = head 
Step 6: It will check whether the head is NULL or not. If the head is NULL, then execute 
step7; otherwise, it will not. 
Step 7: Insert a new node in the head; therefore, the head will point to the new node. 
Step 8: Enter the address of the new node in the previous part of the head.     Head -> prev = new Step9: EXIT  

Function:

Insertatfirst (struct node ** head, int item)
{
struct node*new = malloc (sizeof (struct node));
new -> info = item;
new -> prev = NULL;
new -> next = head;
if (head = = NULL)
head = new;
else
{
head -> prev = new;
head = new;
}
}  

Traversing the Doubly Linked list

  • In order Traversal: For this, the following step is followed.

Step 1: The Linked list pointer will proceed until the head is NULL.

                                while (head != NULL)

Step 2: It will print every information part of the linked list and keep moving the head.

                                 print head -> Info

                                 head = head -> next

  • Reverse Order Traversal: For this, the following step is followed.

Step 1: The Linked list pointer will proceed until the tail is NULL.

                                while (tail != NULL)

Step 2: It will print every information part of the linked list and keep moving the tail.

                                 print tail -> Info

                                 tail = tail -> next

Delete a node at the beginning

If the doubly linked list is empty, then it will return the linked list; Otherwise, we will delete the node that indicates the head pointer. For this, the following step is followed.

Step 1: Take a temporary pointer, in which you will enter the address of the head.                     struct node *temp = head 
Step 2: You will check the head is NULL or not. If the head is NULL, then it will be returned.                     if (head = = NULL)    return 
Step 3: If the head is not NULL, then assign the next part of the head to the next head.                              head = head -> next       free (temp) 
Step 4: The head, which is pointing to the node, assign the NULL in its previous part.                           head -> prev = NULL 
Step 5: Exit  

Function:

deletefromfirst (struct node *head)
{
struct node *temp = head;
if (head = = NULL)
return;
head = head -> next;
free (temp);
head -> prev = NULL;
}  

Delete a node at the end

To delete the last node of the linked list, you will check three conditions.

  • If the doubly linked list is empty, then it will return the linked list.
  • If there is only one node in the linked list, you will delete it, and insert NULL in the head.
  • If there is more than one item in the linked list, it will reach the last node first and then delete the last node. For this, the following step is followed.
Step 1: Take a temporary pointer, in which you will enter the address of the head.   struct node *temp = head 
Step 2: You will check the head is NULL or not. If the head is NULL, then it will be returned.                       if (head = = NULL)    return 
Step 3: You will check the next node of the head is NULL or not. If the next node of the head is                     NULL, then you will repeat the steps from 4 to 6.   
Step 4: Insert the NULL in the head.      head=NULL 
Step 5: Free the temporary pointer.        free(t) 
Step 6: return 
Step 7: You will run the temp until the next part of temp is NULL.                                             while (temp -> next == NULL)                                             temp = temp -> next 
Step 8: Insert the NULL in the previous of the temp.    temp -> prev -> next = NULL 
Step 9: Free the temp       free(temp) 
Step 10: exit

Function:

deletefromlast (struct node *head)
{
struct node * temp = head;
if (head = = NULL)
return;
if (head -> next = = NULL)
{
head = NULL;
free (temp);
return;
}
while (temp -> next != NULL)
temp = temp -> next;
temp -> prev -> next = NULL;
free (temp);
}

Circular Linked List

Each node in a circular linked list is connected like a circle. There is no NULL value at the end of the circular linked list. In this, the last node stores the address of the first node, i.e., the first and last node are adjacent.

There are two types of circular linked list: 

  1. Single circular linked list
  2. Doubly circular linked list.

 


Related Topics

Lowest common ancestor in a binary search tree

Suppose you have given two values of nodes in a binary search tree. You have to find out the lowest common ancestor between the nodes. Let’s take an example tree- For the...

4 minutes read.

Red Black Tree vs AVL Tree: Data Structure

Difference Between Red Black Tree vs AVL Tree Red Black Tree: A red-black tree is referred as self-balancing binary search tree. In red-black, each node stores an extra bit that determines...

4 minutes read.

Doubly Linked List

Doubly Linked List Doubly linked list is another kind of Linked list. Doubly linked list contains two pointers for navigation. In this, we can traverse the list in both directions, either...

4 minutes read.

FLEX (Fast Lexical Analyzer Generator)

FLEX stands for Fast Lexical Analyzer Generator. Around 1987, Vern Paxson created Flex in C with a great deal of input and inspiration from Van Jacobson. Van Jacobson's approach is...

3 minutes read.

Linear Search

Searching: In the data structure, searching is the process in which an element is searched in a list that satisfies one or more than one condition. Types of searching There are two...

4 minutes read.

Construction of B tree in Data Structure

A B-tree is a type of balanced tree data structure that is commonly used in file systems and databases to improve the efficiency of search, insert, and delete operations. The structure...

4 minutes read.

Merge two sorted linked lists

Merge two sorted linked lists In this article, we are going to learn how to merge two linked lists. Here we have given two linked lists that are sorted in increasing...

7 minutes read.

Heap Sort in Data Structure

Heap Sort: Heap Sort is very useful and efficient sorting algorithm in data structure. We can say it is a comparison base sorting algorithm, similar sort where we will find...

2 minutes read.

All About Minimum Cost Spanning Trees in Data Structure

Data management is called database management. This allows the computer to sort or organize the data for efficient retrieval. A data model is a system that stores, manages, and optimizes...

7 minutes read.

Bubble sort algorithm using Javascript

Sorting is a very useful technique in many algorithms and programs. Basically, sorting operations help us to arrange a set of data in a particular manner. Bubble sort is one...

3 minutes read.

Given a Generate all Structurally Unique Binary Search Trees

Implementation // Creating a C++ program that will help us build all the binary search trees for the keys from 1 to n.  #include <bits/stdc++.h> using namespace std; // creating a structure that will...

8 minutes read.

Convert a Binary Tree into a Binary Search Tree

Implementation #include <stdio.h>   #include <stdlib.h>       //creating a node of the binary tree.  struct __nod{       int record;       struct __nod *Lft;       struct __nod *Rt;   };       // presenting the root of the binary tree.   struct...

5 minutes read.

Breadth First Search

Breadth First Search Breadth first search is a graph traversing algorithm. In this, we start traversing from the source node or any selected node and traverse the graph layer by layer....

6 minutes read.

Operations on 1D-Arrays

One Dimensional Array Operations Basic Methods The fundamental operations enabled by an array are listed below. Traverse prints each element of the array one by one.Insert a new element at the specified index.Delete...

8 minutes read.

Count pairs from two linked lists whose sum is equal to a given value

Count pairs from two linked lists whose sum is equal to a given value In this problem, we have given two linked lists of size n1 and n2 with distinct elements...

4 minutes read.

Selection Sort

In each iteration of the selection sort algorithm, the smallest item from an unsorted list is chosen and placed at the top of the unsorted list. Algorithm of Selection Sorting In order...

3 minutes read.

Linear vs Circular Queue: Data Structure

Difference Between Linear and Circular Queue What is Linear Queue? A linear queue is linear data structure which works on first in first out principle. We can say a linear queue is...

3 minutes read.

Find out the area between two concentric circles

You have given two values of the radius of two circles. You have to find out the area between these two circles. Let's take an example - For the above diagram,...

3 minutes read.

Difference between B-tree and Binary Tree

What is B-TREE? The nodes of B-tree are sorted during in-order traversal, and it is called self-balancing tree. A node in a B-tree can have more than two offspring, in contrast...

3 minutes read.

Recursion in Fibonacci

Fibonacci heap is considered to be a particular execution of the heap data structure that ultimately helps in making use of not just any number but the Fibonacci numbers. It...

3 minutes read.