0% found this document useful (0 votes)
52 views8 pages

2.double Linked List

The program creates a doubly linked list and implements functions for insertion, deletion, and traversal operations on the list. The functions include inserting nodes at the beginning, end, or a specified location in the list, deleting nodes from the beginning, end, or after a specified value, and traversing the list to print or search for values. The main menu lets the user test the different functions by selecting options and the output shows the list being built and modified by adding and removing nodes.

Uploaded by

nawaz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views8 pages

2.double Linked List

The program creates a doubly linked list and implements functions for insertion, deletion, and traversal operations on the list. The functions include inserting nodes at the beginning, end, or a specified location in the list, deleting nodes from the beginning, end, or after a specified value, and traversing the list to print or search for values. The main menu lets the user test the different functions by selecting options and the output shows the list being built and modified by adding and removing nodes.

Uploaded by

nawaz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

2.Write a program that uses functions to perform the following operations on doubly linked list.

:
i) Creation ii) Insertion iii) Deletion iv) Traversal
Aim: Creating a Double linked list and performing Insertion, Deletion, Traversal operations on it
Program:
#include<stdio.h>
#include<stdlib.h>
struct node
{
struct node *prev;
struct node *next;
int data;
};
struct node *head;
void insertion_beginning();
void insertion_last();
void insertion_specified();
void deletion_beginning();
void deletion_last();
void deletion_specified();
void display();
void search();
void main ()
{
int choice =0;
clrscr();
while(choice != 9)
{
printf("\n*********Main Menu*********\n");
printf("\nChoose one option from the following list ...\n");
printf("\n===============================================\n");
printf("\n1.Insert in begining\n2.Insert at last\n3.Insert at any random location\n4.Delete from
Beginning\n5.Delete from last \n6.Delete the node after the given data\n7.Search\n8.Display list\
n9.Exit\n");
printf("\nEnter your choice?\n");
scanf("\n%d",&choice);
switch(choice)
{
case 1:insertion_beginning();
break;
case 2:insertion_last();
break;
case 3:insertion_specified();
break;
case 4:deletion_beginning();
break;
case 5:deletion_last();
break;
case 6:deletion_specified();
break;
case 7:search();
break;
case 8:display();
break;
case 9:exit(0);
break;
default:printf("Please enter valid choice..");
}
}
}

void insertion_beginning()
{
struct node *ptr;
int item;
ptr = (struct node *)malloc(sizeof(struct node));
if(ptr == NULL)
{
printf("\nOVERFLOW");
}
else
{
printf("\nEnter Item value");
scanf("%d",&item);

if(head==NULL)
{
ptr->next = NULL;
ptr->prev=NULL;
ptr->data=item;
head=ptr;
}
else
{
ptr->data=item;
ptr->prev=NULL;
ptr->next = head;
head->prev=ptr;
head=ptr;
}
printf("\nNode inserted\n");
}

}
void insertion_last()
{
struct node *ptr,*temp;
int item;
ptr = (struct node *) malloc(sizeof(struct node));
if(ptr == NULL)
{
printf("\nOVERFLOW");
}
else
{
printf("\nEnter value");
scanf("%d",&item);
ptr->data=item;
if(head == NULL)
{
ptr->next = NULL;
ptr->prev = NULL;
head = ptr;
}
else
{
temp = head;
while(temp->next!=NULL)
{
temp = temp->next;
}
temp->next = ptr;
ptr ->prev=temp;
ptr->next = NULL;
}

}
printf("\nnode inserted\n");
}
void insertion_specified()
{
struct node *ptr,*temp;
int item,loc,i;
ptr = (struct node *)malloc(sizeof(struct node));
if(ptr == NULL)
{
printf("\n OVERFLOW");
}
else
{
temp=head;
printf("Enter the location");
scanf("%d",&loc);
for(i=0;i<loc-1;i++)
{
temp = temp->next;
if(temp == NULL)
{
printf("\n There are less than %d elements", loc);
return;
}
}
printf("Enter value");
scanf("%d",&item);
ptr->data = item;
ptr->next = temp->next;
ptr -> prev = temp;
temp->next = ptr;
temp->next->prev=ptr;
printf("\nnode inserted\n");
}
}
void deletion_beginning()
{
struct node *ptr;
if(head == NULL)
{
printf("\n UNDERFLOW");
}
else if(head->next == NULL)
{
head = NULL;
free(head);
printf("\nnode deleted\n");
}
else
{
ptr = head;
head = head -> next;
head -> prev = NULL;
free(ptr);
printf("\nnode deleted\n");
}

}
void deletion_last()
{
struct node *ptr;
ptr=head;
if(head == NULL)
{
printf("\n UNDERFLOW");
}
else if(head->next == NULL)
{
head = NULL;
free(head);
printf("\nnode deleted\n");
}
else
{
ptr = head;
while(ptr->next != NULL)
{
ptr = ptr -> next;
}
ptr->prev->next= NULL;
free(ptr);
printf("\nnode deleted\n");
}
}
void deletion_specified()
{
struct node *ptr, *temp;
int val;
printf("\n Enter the data after which the node is to be deleted : ");
scanf("%d", &val);
ptr = head;
while(ptr -> data != val)
ptr = ptr -> next;
if(ptr -> next == NULL)
{
printf("\nCan't delete\n");
}
else if(ptr -> next -> next == NULL)
{
ptr ->next = NULL;
}
else
{
temp = ptr -> next;
ptr -> next = temp -> next;
temp -> next -> prev = ptr;
free(temp);
printf("\nnode deleted\n");
}
}
void display()
{
struct node *ptr;
printf("\n printing values...\n");
ptr = head;
while(ptr != NULL)
{
printf("%d\n",ptr->data);
ptr=ptr->next;
}
}
void search()
{
struct node *ptr;
int item,i=0,flag;
ptr = head;
if(ptr == NULL)
{
printf("\nEmpty List\n");
}
else
{
printf("\nEnter item which you want to search?\n");
scanf("%d",&item);
while (ptr!=NULL)
{
if(ptr->data == item)
{
printf("\nitem found at location %d ",i+1);
flag=0;
break;
}
else
{
flag=1;
}
i++;
ptr = ptr -> next;
}
if(flag==1)
{
printf("\nItem not found\n");
}
}
}

Output

*********Main Menu*********

Choose one option from the following list ...

===============================================

1.Insert in begining

2.Insert at last

3.Insert at any random location

4.Delete from Beginning

5.Delete from last

6.Delete the node after the given data

7.Search

8.Display List

9.Exit

 Enter your choice?

printing values...

Enter your choice?

Enter Item value10

Node inserted

 Enter your choice?

Enter Item value5

Node inserted

Enter your choice?

Enter Item value20

Node inserted

Enter your choice?

Enter Item value25


Node inserted

 Enter your choice?

printing values...

10

20

25

 Enter your choice?

Enter the location2

Enter value15

node inserted

 Enter your choice?

printing values...

10

15

20

25

 Enter your choice?

node deleted

 Enter your choice?

printing values...

10

15

20

25

 Enter your choice?

5
node deleted

 Enter your choice?

printing values...

10

15

20

 Enter your choice?

Enter the data after which the node is to be deleted : 10

node deleted

 Enter your choice?

printing values...

10

20

 Enter your choice?

Enter item which you want to search?

20

item found at location 2

 Enter your choice?

Exited…

Result: Hence Double linked list created and operations like Insertion, Deletion and Traversal are
performed on it.

You might also like