You are on page 1of 17

Lab#05: Doubly Linked List implementation SSUET/QR/114

LAB # 05

Doubly Linked List implementation


Objective

The purpose of this lab is to implement doubly linked list and associated operations.

Theory

Doubly Linked List is a variation of the linked list. The linked list is a linear data structure
which can be described as the collection of nodes. Nodes are connected through
pointers. Each node contains two fields: data and pointer to the next field. The first node
of the linked list is called the head, and the last node of the list is called the tail of the
list.

One of the limitations of the singly linked list is that it can be traversed in only one
direction that is forward. The doubly linked list has overcome this limitation by providing
an additional pointer that points to the previous node. With the help of the previous
pointer, the doubly linked list can be traversed in a backward direction thus making
insertion and deletion operation easier to perform. So, a typical node in the doubly
linked list consists of three fields:

 Nodes store:
o element
o link to the previous node
o link to the next node

Creating a LinkedList
In order to create an empty list, assign
NULL value to start pointer variable.
LinkedList(){
first=NULL; last=NULL;
PredLoc_=NULL; Loc_=NULL;
CE-205: Data Structures and Algorithms Page 24
Lab#05: Doubly Linked List implementation SSUET/QR/114

}
Creating a LinkedList
In order to create an empty list, assign
NULL value to start pointer variable.
LinkedList(){
first=NULL; last=NULL;
PredLoc_=NULL; Loc_=NULL;
}
Creating a LinkedList
In order to create an empty list, assign
NULL value to start pointer variable.
LinkedList(){
first=NULL; last=NULL;
PredLoc_=NULL; Loc_=NULL;
}
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 25
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 26
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 27
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 28
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 29
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 30
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 31
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 32
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 33
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
In order to creat
Creating a LinkedList
CE-205: Data Structures and Algorithms Page 34
Lab#05: Doubly Linked List implementation SSUET/QR/114

In order to creat

Above picture represents a doubly linked list in which each node has two pointers to point to
previous and next node respectively. Here, node 1 represents the head of the list. The previous
pointer of the head node will always point to NULL. Next pointer of node one will point to node
2. Node 5 represents the tail of the list whose previous pointer will point to node 4, and next will
point to NULL.

Algorithm to traverse the doubly linked list in forward direction

void traverseDLL(Node head) {


while(temp != null)
{
print(temp.data)
temp = temp.next
}}

Algorithm to traverse the doubly linked list in backward direction

void traverseDLL(Node end) {


while(temp != null)
{
print(temp.data)
temp = temp.prev
}}

Algorithm to insert node at beginning:

Node insertAtBegin(Node head, int val)


{
newNode = new Node(val)
if (head = null)
return newNode
else
{
newNode.next = head
head.prev = newNode
head = newNode
CE-205: Data Structures and Algorithms Page 35
Lab#05: Doubly Linked List implementation SSUET/QR/114

return newNode
}}
Algorithm to insert node at end

Node insertAtEnd(Node head, int val)


{
If(head == null)
{
newNode = new Node(val)
head = newNode
return head
}
else
{
newNode.prev=end
end.next=newNode
newNode.next=null
end = newNode
}
}
Algorithm to insert at particular location

void insertat(int loc, int val)


{
newNode = new Node(val)
Temp.pre.next=newNode
Temp.p = newNode
newNode.next = temp
prevNode.pre = temp
}
Algorithm to search element :

bool searchLL(Node head, int val)


{
Node temp = head
While(temp!=null)
{
If(temp.data ==val)
return true
temp= temp.next
}
return false

CE-205: Data Structures and Algorithms Page 36


Lab#05: Doubly Linked List implementation SSUET/QR/114

Algorithm to delete node at begin:

Node deleteDLLAtBeg()
{
Head = head.next;
Head.pre = null
}

Algorithm to delete node at End:

Node deleteDLLAtBeg()
{
End = End.pre;
End.next = null
}

Algorithm to delete from particular location

void insertat(int loc, int val)


{
Temp.pre.next=temp.next
Temp.next.pre = temp.pre
}

Sample Program
import java.util.*;

class Node{  
        int data;  
        Node previous;  
        Node next;  
  
        public Node(int data) {  
            this.data = data;  
        }  
    }  
public class DoublyLinkedList {  

CE-205: Data Structures and Algorithms Page 37


Lab#05: Doubly Linked List implementation SSUET/QR/114

Node head, tail = null;  
  
    //addNode() will add a node to the list  
    public void addNode(int data) {  
        //Create a new node  
        Node newNode = new Node(data);  
          //If list is empty  
        if(head == null) {  
            //Both head and tail will point to newNode  
            head = tail = newNode;  
            //head's previous will point to null  
            head.previous = null;  
            //tail's next will point to null, as it is the last node of the list  
            tail.next = null;  
        }  
        else {  
            //newNode will be added after tail such that tail's next will point to newNode  
            tail.next = newNode;  
            //newNode's previous will point to tail  
            newNode.previous = tail;  
            //newNode will become new tail  
            tail = newNode;  
            //As it is last node, tail's next will point to null  
            tail.next = null;  
        }  
    }  
  
    //display() will print out the nodes of the list  
    public void display() {  
        //Node current will point to head  
        Node current = head;  
        if(head == null) {  
            System.out.println("List is empty");  
            return;  

CE-205: Data Structures and Algorithms Page 38


Lab#05: Doubly Linked List implementation SSUET/QR/114

        }  
        System.out.println("Nodes of doubly linked list: ");  
        while(current != null) {  
            //Prints each node by incrementing the pointer.  
  
            System.out.print(current.data + " ");  
            current = current.next;  
        }  
    }  
   public static void main(String[] args) {  
        DoublyLinkedList dList = new DoublyLinkedList();  
        //Add nodes to the list  
        dList.addNode(1);  
        dList.addNode(2);  
        dList.addNode(3);  
        dList.addNode(4);  
        dList.addNode(5);  
          //Displays the nodes present in the list  
        dList.display();  
    }  
}  

Task

1. Write a program that can insert the records of employees in a link list. The record includes
employee’s name, designation, department and company name. The program should be able to
insert the record as first, last and as middle node in the list and search any record.

2. Write a program to insert the records of students in a Doubly linked list and insert elements at
first and last node

3. Write a program to create Doubly LinkedList and perform any five operations on it.

Home Task

4. Write a program to create Unsorted LinkedList as well as Sorted LinkedList.

CE-205: Data Structures and Algorithms Page 39


Lab#05: Doubly Linked List implementation SSUET/QR/114

CE-205: Data Structures and Algorithms Page 40

You might also like