Doubly Linked List in Data Structure

Table of Contents

Doubly Linked List in Data Structure

A doubly linked list contains two pointers on each node: One will point the previous node and the other will point the next node.

 

Advantage of Doubly Linked List:

This helps to traverse the list in forward & backward direction.

 

Insertion of node in doubly linked list:

A. Insertion of node at the beginning

Algorithm: INSBEG (START, INFO, PREV, NEXT, ITEM, TEMP)

This algorithm inserts TEMP as first node in the doubly linked list. ITEM variable contains data of new node.

Step 1: Allocate memory for new node TEMP.

Step 2: [ Store the ITEM into INFO part of new node ]

TEMP →  INFO := ITEM

Step 3: [ Insert the new node TEMP as first node. ]

TEMP    NEXT := START

START := TEMP

TEMP    PREV := NULL

If START ≠ NULL then             [ List is not empty ]

START    PREV := TEMP

[ End of If structure ]

Step 4: [ Exit ]

Return.

 

B. Insertion of node at the end

Algorithm: INSLAST (START, INFO, NEXT, PREV, ITEM, TEMP, PTR)

This algorithm inserts TEMP as last node in the linked list. ITEM variable contains data of new node.

Step 1: Allocate memory for new node TEMP.

Step 2: [ Store the ITEM into INFO part of new node ]

TEMP    INFO := ITEM

Step 3: [ Make the TEMP node points to NULL. ]

TEMP    NEXT := NULL

Step 4: [Check whether list is empty or not. ]

If START = NULL then

TEMP    PREV := NULL

START := TEMP

and Return.

[ End of If structure ]

Step 5: [ Initialize the PTR variable. ]

PTR := START

Step 6: [ Increment the PTR variable ]

Repeat while PTR    NEXT ≠ NULL

PTR := PTR    NEXT

[ End of Loop structure ]

Step 7: [ Insert the new node TEMP as last node. ]

PTR →  NEXT := TEMP

TEMP   PREV := PTR

Step 8: [ Exit ]

Return.

 

C. Insertion of node after specified position

Algorithm: INST (START, INFO, PREV, NEXT, ITEM, TEMP, POS, C, PTR, Q)

This algorithm inserts TEMP node after position POS in the doubly linked list. ITEM variable contains data of new node.

Step 1: [ Check whether list is empty or not. ]

If START = NULL then

Write (‘List is empty’)

and return.

[ End of If structure ]

Step 2: [ Initialize the PTR and C variable. ]

PTR := START

C := 0

Step 3: Repeat while PTR ≠ NULL AND C ≠ POS

C := C+1

Q := PTR

PTR := PTR    NEXT

[ End of Loop structure ]

Step 4: If PTR = NULL and C ≠ POS then

Write (‘Position not found’) and Return.

Step 5: Allocate memory for new node TEMP.

Step 6: [ Store the ITEM into INFO part of new node ]

TEMP    INFO := ITEM

Step 7: [ Insert the new node TEMP. ]

TEMP    NEXT := PTR

PTR    PREV := TEMP

  NEXT := TEMP

TEMP    PREV := Q

Step 8: [ Exit ]

Return.

 

Deletion of node from linked list:

A. Deletion of first node

Algorithm: DELBEG (START, INFO, NEXT, PREV, ITEM, TEMP)

This algorithm deletes the first node from the doubly linked list and store it in TEMP. ITEM variable is used to store the data of deleted node.

Step 1: [Check whether list is empty or not. ]

If START = NULL then

Write (‘List is empty’) and return.

[ End of If structure ]

Step 2: [ Store the data of first node into ITEM. ]

ITEM := START    INFO

Step 3: [ Remove the node ]

TEMP := START

START := START    NEXT

START    PREV := NULL

Step 4: Free the TEMP node.

Step 5: [ Exit ]

Return.

 

B. Deletion of Last Node

Algorithm: DELLAST (START, INFO, NEXT, PREV, ITEM, PTR, Q)

This algorithm deletes the last node from the doubly linked list. ITEM variable is used to store the data of deleted node.

Step 1: [Check whether list is empty or not. ]

If START = NULL then

Write (‘List is empty’) and return.

[ End of If structure ]

Step 2: [ Initialize the PTR variable. ]

PTR := START

Step 3: Repeat while PTR  NEXT ≠ NULL

Q := PTR

PTR := PTR    NEXT

[ End of Loop structure ]

Step 4: [ Store the data of last node into ITEM. ]

ITEM := PTR    INFO

Step 5: [ Deletes the node ]

  NEXT := NULL

Step 6: Free the PTR node.

Step 7: [ Exit ]

Return.

 

C. Deletion of node containing particular data

Algorithm: DELETE (START, INFO, NEXT, PREV, ITEM, PTR, Q)

This algorithm deletes the node containing the data ITEM from the doubly linked list.

Step 1: [Check whether list is empty or not. ]

If START = NULL then

Write (‘List is empty’) and return.

[ End of If structure ]

Step 2: [ Initialize the PTR variable. ]

PTR := START

Step 3: Repeat while PTR ≠ NULL

If PTR    INFO = ITEM, then

If PTR = START, then     [ First node is to be deleted ]

START = START  NEXT

If START ≠ NULL [ There is more than one node ]

START    PREV := NULL

[ End of If structure ]

Else:

If PTR    NEXT = NULL, then           [ Data is at last node ]

→  NEXT := NULL

Else:

  NEXT := PTR  →  NEXT

PTR   NEXT   PREV := Q

[ End of If structure ]

Free the PTR node and Return.

Else:

Q := PTR [ Moving to next node. ]

PTR := PTR    NEXT

[ End of If structure ]

Step 4: Write (‘ITEM not found’)

Step 5: [ Exit ]

Return.

You May Like to Browers More