Wednesday 11 February 2015

program to create a doubly circular linked list.


#include<stdio.h>
#include<conio.h>
struct circular
{
    int i;
    struct circular *front;
    struct circular *back;
};
int cnt=0;
struct circular *temp;
struct circular *head;
struct circular *p;
struct circular *mid;
struct circular *move;
void create(void);
void insert(void);
void display(void);
void del(void);
void main()
{
    int ch=0;
    while(ch!=5)
    {
        printf("\n1.CREATE");
        printf("\n2.INSERT");
        printf("\n3.DELETE");
        printf("\n4.DISPLAY");
        printf("\n5.EXIT");
        printf("\nEnter your choice=");
        scanf("%d",&ch);
if(ch==1)
        {
            create();
            cnt++;
            cnt++;
        }
if(ch==2)
        {
            insert();
            cnt++;
        }
if(ch==3)
        {
            del();
            cnt--;
        }
if(ch==4)
        {
            display();
        }
if(ch==5)
        {
            break;
        }
    }
    getch();
}
void create()
{
    head=(struct circular *)malloc(sizeof(struct circular));
    head->back=head;
    head->front=head;
printf("\nENTER THE DATA");
    scanf("%d",&head->i);
    temp=head;
temp->back=(struct circular *)malloc(sizeof(struct circular));
    temp=temp->back;
    temp->back=head;
    head->front=temp;
printf("\nENETER THE DATA");
    scanf("%d",&temp->i);
}
void insert()
{
    int add,t;
      printf("\n\t ENTER ANY NUMBER=");
    scanf("%d",&add);
    p=head;
    t=1;
    while(t<add)
    {
        p=p->back;
        t++;
    }
    mid=(struct circular *)malloc(sizeof(struct circular));
    printf("\n\n\nENTER THE DATA");
    scanf("%d",&mid->i);
      mid->back=p->back;
    p->back=mid;
    p->back->front=mid;
    mid->front=p;
}
void display()
{
    p=head;
    printf("\n%d-->",p->i);
    p=p->back;
    while(p!=head)
    {
        printf("\t%d-->",p->i);
        p=p->back;
    }
}
void del(void)
{
    int add,t;
      printf("\n\n\t ENTER ANY NUMBER");
    scanf("%d",&add);
    p=head;
    t=1;
    while(t<add-1)
    {
        p=p->back;
        t++;
    }
    mid=p->back;
    p->back=mid->back;
    mid->back->front=p;
    free(mid);

}

No comments:

Post a Comment