Skip to main content

Sample: Dual Directional Linked List

#include<stdio.h>
#include<malloc.h>
typedef struct list
{
    int data;
    struct list *lnext;
    struct list *rnext;
}node;

node *START=NULL;

insert()
{
    int i,f;
    node *tmp,*q;
    tmp=(node*)malloc(sizeof(node));
    printf("Enter a value");
    scanf("%d",&i);
    tmp->data=i;
    if(START==NULL)
    {
        START=tmp;
    }else
    {
        printf("Enter SIDE 1. Right 2. Left");
        scanf("%d",&f);
        if(f==1)
        {
            q=START;
            while(q->rnext!=NULL)
            {
                q=q->rnext;
            }
            q->rnext=tmp;
        }else if(f==2)
        {
            q=START;
            while(q->lnext!=NULL)
            {
                q=q->lnext;
            }
            q->lnext=tmp;
        }else{printf("Invalid Input");}
    }
   
}


display()
{
    node *q;
    if(START==NULL)
        printf("Empty List");
    else
    {
        q=START;
        while(q!=NULL)
        {
            printf("%d -> ",q->data);
            q=q->rnext;
        }
        q=START;
        printf("\n");
        while(q!=NULL)
        {
            printf("%d <- ",q->data);
            q=q->lnext;
        }
    }
}


int main()
{
    int ch,f=0;
    //clrscr();//Optional
    while(f<=1)
    {
        printf("\n1. INSERT VALUE\n2. DISPLAY \n");
        scanf("%d",&ch);
        switch(ch)
        {
            case 1:
                insert();
                //getch(); //Optional
                break;
            case 2:
                display();
                //getch();//Optional
                break;
            default:
                printf("\nWrong Input");
        }
    }
}

Comments