DLL

All Functions

#include <stdio.h>
#include <stdlib.h>
typedef struct dll
{
    int data;
    struct dll *rlink;
    struct dll *llink;
}node;
node *newnode,*temp,*start=NULL,*last,*prev,*cur;
int main()
{
    int ch;
    void create();
    void insatbegin();
    void insatlast();
    void insatrandom();
    void delatbegin();
    void delatlast();
    void delatrandom();
    void display();
    printf(“enter the choice”);
    printf(“1.create\n2.display\n3.insatbegin\n4.insatlast\n5.insatrandom\n6.delatbegin\n7.delatlast\n8.delatrandom”);
    scanf(“%d”,&ch);
    do
    {
        switch(ch)
        {
            case 1:create();
            break;
            case 2:display();
            break;
            case 3:insatbegin();
            break;
            case 4:insatlast();
            break;
            case 5:insatrandom();
            break;
            case 6:delatbegin();
            break;
            case 7:delatlast();
            break;
            case 8:delatrandom();
            break;
            case 9:exit(0);
            break;
            default:printf(“enter correct choice”);
        }
    }while(ch<9);
    return 0;
}
void create()
{
    char ch;
    int dp;
    do
    {
        newnode=(node*)malloc(sizeof(node));
        printf(“enter the data part”);
        scanf(“%d”,&dp);
        newnode->data=dp;
        newnode->rlink=NULL;
        newnode->llink=NULL;
        if(start==NULL)
        {
            start=newnode;
            last=newnode;
        }
        else
        {
            last->rlink=newnode;
            newnode->llink=last;
            last=newnode;
        }
        printf(“do you want to continue”);
        fflush(stdin);
        scanf(“%c”,&ch);
    }while(ch==’Y’||ch==’y’);
}
void insatbegin()
{
    int dp,pos=1;
    newnode=(node*)malloc(sizeof(node));
    printf(“enter the datapart”);
    scanf(“%d”,&dp);
    newnode->data=dp;
    newnode->rlink=NULL;
    newnode->llink=NULL;
    if(pos==1)
    {
        newnode->rlink=start;
        start=newnode;
    }
    else
    {
        printf(“element cant be inserted”);
    }
}
void insatlast()
{
    int dp;
    newnode =(node*)malloc(sizeof(node));
    printf(“enter the datapart”);
    scanf(“%d”,&dp);
    newnode->data=dp;
    newnode->rlink=NULL;
    newnode->llink=NULL;
    temp=start;
    while(temp->rlink!=NULL)
    {
        temp=temp->rlink;
    }
    temp->rlink=newnode;
    newnode->llink=temp;

}
void insatrandom()
{
    int dp,pos,i=2;
    newnode=(node*)malloc(sizeof(node));
    printf(“enter the datapart”);
    scanf(“%d”,&dp);
    printf(“enter the position”);
    scanf(“%d”,&pos);
    newnode->data=dp;
    newnode->rlink=NULL;
    newnode->llink=NULL;
    temp=start;
    while(i<pos&&temp->rlink!=NULL)
    {
        temp=temp->rlink;
        i++;
    }
    newnode->rlink=temp->rlink;
    newnode->llink=temp;
    (temp->rlink)->llink=newnode;
    temp->rlink=newnode;
}
void delatbegin()
{
    if(start==NULL)
    {
        printf(“deletion is not possible”);
    }
    else
    {
        temp=start;
        start=start->rlink;
        start->llink=NULL;
        free(temp);
    }
}
void delatlast()
{
    if(start==NULL)
    {
        printf(“list is empty”);
    }
    else
    {
        cur=start;
        while(cur->rlink!=NULL)
        {
            prev=cur;
            cur=cur->rlink;

        }
        prev->rlink=NULL;
        free(cur);
    }
}
void delatrandom()
{
    int dp;
    if(start==NULL)
    {
        printf(“list is empty”);
    }
    else
    {
        printf(“enter datapart to be deleted”);
        scanf(“%d”,&dp);
        cur=start;
        while(cur->data!=dp&&cur->rlink!=NULL)
        {
            prev=cur;
             cur=cur->rlink;
        }
        prev->rlink=cur->rlink;
        (cur->rlink)->llink=prev;
        free(cur);
    }
}
void display()
{
    node *temp=start;
    printf(“start->”);
    while(temp->rlink!=NULL)
    {
        printf(“%d->”,temp->data);
        temp=temp->rlink;
    }
}

Leave a Comment

Your email address will not be published. Required fields are marked *