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