Showing posts with label delete and display operations using structure pointer. Show all posts
Showing posts with label delete and display operations using structure pointer. Show all posts

Monday, 15 October 2012

Doublely link list with create, insert, delete and display operations using structure pointer

Doublely link list with create, insert, delete and display operations using structure pointer

 
#include<conio.h>
#include<stdio.h>


struct doubly
{
    struct doubly *front;
    struct doubly *back;
    int i;
};

void main()
{
    struct doubly *head=0;
    struct doubly *last=0;
    struct doubly *p=0;
    struct doubly *temp=0;
    int ch,intch,user,cnt=0,t,add;
    clrscr();
    printf("\n\t 1. CREATE.");
    printf("\n\t 2. INSERT.");
    printf("\n\t 3. DELETE.");
    printf("\n\t 4. DISPLAY.");
    printf("\n\t 5.EXIT.");
    scanf("%d",&ch);

    while(ch!=5)
    {
        if(ch==1)
        {
            cnt=0;
            head=(struct doubly *)malloc(sizeof(struct doubly));
            head->back=0;
            head->front=0;
            printf("\n\t ENTER DATA::: ");
            scanf("%d",&head->i);
            cnt++;
            last=head;
        }
        if(ch==2)
        {

            printf("\n\t 1. INSERTION AT FRONT.");
            printf("\n\t 2. INSERTION AT MIDDLE.");
            printf("\n\t 3. INSERTION AT END.");
            scanf("%d",&intch);
            temp=(struct doubly *)malloc(sizeof(struct doubly));
            printf("\n\t ENTER DATA:::");
            scanf("%d",&temp->i);

            if(intch==1)
            {
                temp->front=0;
                temp->back=head;
                head=temp;
                cnt++;
            }
            if(intch==3)
            {
                p=head;
                while(p->back!=0)
                {
                    p=p->back;
                }
                temp->back=0;
                temp->front=p;
                p->back=temp;
                cnt++;
            }
            if(intch==2)
            {
                printf("\n\tNTER VALUE BETVN 1--%d",cnt);
                scanf("%d",&add);
                t=1;
                p=head;
                while(t<add)
                {
                    p=p->back;
                    t++;
                }
                temp->back=p->back;
                p->back->front=temp;
                p->back=temp;
                temp->front=p;

            }
        }
        if(ch==4)
        {
            p=head;
            while(p!=0)
            {
                printf("\t-->%d",p->i);
                p=p->back;
            }
            printf("\n\t total nodes %d",cnt);
        }
        if(ch==3)
        {
            printf("\n\t1. DELETE FRONT");
            printf("\n\t2. DELETE MIDDLE");
            printf("\n\t3. DELETE END");
            scanf("%d",&intch);
            if(intch==1)
            {

                head->back=t;
                free(head);
                head=t;
                head->front=0;
                cnt--;
            }
            if(intch==3)
            {
                p=head;
                while(p->back!=0)
                {
                    p=p->back;
                }
                temp->front=p;
                p->back=temp;
                temp->back=0;
                cnt--;
            }
            if(intch==2)
            {
                printf("\n\tNTER VALUE BETVN 1--%d",cnt);
                scanf("%d",&add);
                t=1;
                p=head;
                while(t<(add-1))
                {
                    p=p->back;
                    t++;
                }
                temp=p->back;
                p->back=temp->back;
                temp->back->front=p;
                free(temp);

            }

        }
        printf("\n\t 2. INSERT.");
        printf("\n\t 3. DELETE.");
        printf("\n\t 4. DISPLAY.");
        printf("\n\t 5.EXIT.");
        scanf("%d",&ch);
    }
    getch();
}