Thursday, January 15, 2015

How to create,insert,delete and reverse Doubly Circular linklist in C++?

#include<iostream>
#include<conio.h>
using namespace std;
 struct circular
{
    int i;
    struct circular *front;
    struct circular *back;
};
struct circular *temp;
struct circular *head;
struct circular *p;
struct circular *mid;
struct circular *move;

int cnt=0;


void create(void);
void insert(void);
void display(void);
void del(void);



//Creating a node
void create()
{

   
    head=(struct circular *)malloc(sizeof(struct circular));
    head->back=head;
    head->front=head;

    cout<<"ENETER THE DATA\n";
    cin>>head->i;
    temp=head;

    temp->back=(struct circular *)malloc(sizeof(struct circular));
    temp=temp->back;
    temp->back=head;
    head->front=temp;
cout<<"ENETER THE DATA\n";
    cin>>temp->i;


   
}

//Displaying the list
void display()
{
    p=head;
    cout<<p->i;
    p=p->back;
    while(p!=head)
    {
        cout<<p->i;
        p=p->back;
    }
    cout<<"\n";

}

//Inserting a new node
void insert()
{
    int add,t;

    cout<<"\n\t ENTER ANY NUMBER BETWEEN 1 AND %d\n"<<cnt;
    cin>>add;
    p=head;
    t=1;
    while(t<add)
    {
        p=p->back;
        t++;
    }
    mid=(struct circular *)malloc(sizeof(struct circular));
    cout<<"\n\n\nENETER THE DATA\n";
    cin>>mid->i;

    mid->back=p->back;
    p->back=mid;
    p->back->front=mid;
    mid->front=p;

}

//Deleting a node
void del(void)
{
    int add,t;

    cout<<"\n\n\t ENTER ANY NUMBER BETWEEN 1 AND %d\n"<<cnt;
    cin>>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);
}


//Calling in main()
int main()
{
    int ch=0;
    while(ch!=5)
    {
        cout<<"\n1.CREATE";
        cout<<"\n2.INSERT";
        cout<<"\n3.DELETE";
        cout<<"\n4.DISPLAY";
        cout<<"\n5.EXIT\n";
        cin>>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;
        }
    }
}

No comments:

Post a Comment