Saturday, 24 September 2016

Doubly Linked List : Insert at Front

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