Doubly Linked List : Insert at Front
#include<stdio.h>
#include<stdlib.h>
struct
node
{
int data;
struct node *llink;
struct node *rlink;
};
typedef
struct node* NODE;
NODE getnode();
NODE insert_at_front(NODE first, int
item);
void display(NODE first);
NODE
getnode()
{
NODE x;
x = (NODE) malloc(sizeof(struct node));
x->llink=NULL;
x->rlink=NULL;
return x;
}
NODE
insert_at_front(NODE first, int item)
{
int val;
NODE temp;
temp = getnode();
temp->data = item;
if(first == NULL) /*Case 1: List is empty*/
{
return temp;
}
temp->rlink = first; /*Case 2: List not empty. Insert temp node at
front of list.*/
first->llink = temp;
return temp;
}
void
display(NODE first)
{
NODE
cur;
cur
= first;
printf("\nContents
are:");
if(cur
== NULL)
printf("\nDoubly
Linked List is empty. Nothing to display.");
else
{
while(cur!=NULL)
{
printf("%d ", cur->data);
cur = cur->rlink;
}
}
}
void
main()
{
int
ch, item;
NODE first = NULL;
while(1)
{
printf("\n\n~~MENU~~");
printf("\n1.Insert
at front");
printf("\n2.Display");
printf("\n3.exit");
printf("\nEnter
your choice: ");
scanf("%d",&ch);
switch(ch)
{
case
1: printf("\nEnter the value: ");
scanf("%d", &item);
first = insert_at_front(first, item);
break;
case
2: display(first);
break;
case
3: exit(0);
}
}
}
Output:
~~MENU~~
1.Insert
at front
2.Display
3.exit
Enter
your choice: 1
Enter the value: 11
~~MENU~~
1.Insert
at front
2.Display
3.exit
Enter
your choice: 1
Enter the value: 12
~~MENU~~
1.Insert
at front
2.Display
3.exit
Enter
your choice: 2
Contents are: 12 11
~~MENU~~
1.Insert
at front
2.Display
3.exit
Enter
your choice: 3