C Program to implement Doubly Linked List to insert and delete a node from rear and display the contents of the Doubly Linked List
Program
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct node
{
int info;
struct node *rlink;
struct node *llink;
};
typedef struct node* NODE;
NODE getnode();
NODE insert_rear(NODE , int);
NODE delete_rear(NODE);
void display(NODE);
void main()
{
NODE first;
int item, choice;
while(1)
{
printf("1. Insert rear\n");
printf("2. Delete rear\n");
printf("3. Display\n");
printf("4. Exit\n");
scanf("%d", &choice);
switch(choice)
{
case 1:
printf("Enter item to be inserted:\t");
scanf("%d", &item);
first = insert_rear(first, item);
break;
case 2:
first = delete_rear(first);
break;
case 3:
display(first);
break;
default:
exit(0);
}
}
}
NODE getnode()
{
NODE x;
x = (NODE) malloc(sizeof(struct node));
if(x == NULL)
{
printf("Node creation error\n");
return;
}
return x;
}
NODE insert_rear(NODE first, int item)
{
NODE temp;
NODE cur;
temp = getnode();
temp->info = item;
temp->rlink = NULL;
if(first == NULL)
return temp;
cur = first;
while(cur->rlink != NULL)
{
cur = cur->rlink;
}
cur->rlink = temp;
temp->llink = cur;
return first;
}
NODE delete_rear(NODE first)
{
NODE cur, prev;
if(first == NULL)
{
printf("List is empty\n");
return first;
}
if(first->rlink == NULL)
{
printf("Item deleted is %d\n", first->info);
free(first);
return NULL;
}
cur = first;
while(cur->rlink != NULL)
{
prev = cur;
cur = cur->rlink;
}
prev->rlink = NULL;
printf("Element deleted : %d\n", cur->info);
free(cur);
return first;
}
void display(NODE first)
{
NODE temp;
if(first == NULL)
{
printf("No elements in the list\n");
return;
}
printf("Your linked list is:\n");
temp = first;
while(temp != NULL)
{
printf("%d\n",temp->info);
temp = temp->rlink;
}
}
Output
1. Insert rear
2. Delete rear
3. Display
4. Exit
1
Enter item to be inserted: 10
1. Insert rear
2. Delete rear
3. Display
4. Exit
1
Enter item to be inserted: 29
1. Insert rear
2. Delete rear
3. Display
4. Exit
1
Enter item to be inserted: 30
1. Insert rear
2. Delete rear
3. Display
4. Exit
1
Enter item to be inserted: 32
1. Insert rear
2. Delete rear
3. Display
4. Exit
3
Your linked list is:
10
29
30
32
1. Insert rear
2. Delete rear
3. Display
4. Exit
2
Element deleted : 32
1. Insert rear
2. Delete rear
3. Display
4. Exit
2
Element deleted : 30
1. Insert rear
2. Delete rear
3. Display
4. Exit
2
Element deleted : 29
1. Insert rear
2. Delete rear
3. Display
4. Exit
1
Enter item to be inserted: 10
1. Insert rear
2. Delete rear
3. Display
4. Exit
3
Your linked list is:
10
10
1. Insert rear
2. Delete rear
3. Display
4. Exit
4