SLL

Insertion,deletion,create,display

#include <stdio.h>
#include <stdlib.h>
typedef struct sll
{
    int data;
    struct sll *link;

}node;
node *start=NULL,*newnode,*last,*temp;
int main()
{
    void create();
    void display();
    void insatbegin();
    void insatlast();
    void insatrandom();
    void delatbegin();
    void delatlast();
    void delatrandom();
    int ch;
    printf(“enter your choice\n”);
    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”);
            break;
        }
    } while (ch<9);
    return 0;

}
void create()
{
    node *newnode,*last;
    int dp;
    char op;
    do
    {
        newnode = (node*)malloc(sizeof(node));
        printf(“enter the datapart\n”);
        scanf(“%d”,&dp);
        newnode->data=dp;
        newnode->link=NULL;
        if(start==NULL)
        {
            start=newnode;
            last=newnode;

        }
        else
        {
            last->link=newnode;
            last=newnode;
        }
        printf(“do you want to continue”);
        fflush(stdin);
        scanf(“%c”,&op);
    } while (op==’Y’||op==’y’);

}
void insatbegin()
{
    int dp;
    int pos=1;
    newnode=(node*)malloc(sizeof(node));
    printf(“enter the datapart”);
    scanf(“%d”,&dp);
    newnode->data=dp;
    newnode->link=NULL;
    if(pos==1)
    {
        newnode->link=start;
        start=newnode;
    }
    else
    {
        printf(“node cant be inserted”);
    }
}
void insatlast()
{
    int dp;
    temp=start;
    newnode=(node*)malloc(sizeof(node));
    printf(“enter datapart”);
    scanf(“%d”,&dp);
    newnode->data=dp;
    newnode->link=NULL;
    while(temp->link!=NULL)
    {
        temp=temp->link;
    }
    temp->link=newnode;
    newnode->link=NULL;

}
void insatrandom()
{
    int dp;
    int i=2,pos;
    newnode=(node*)malloc(sizeof(node));
    printf(“enter datapart”);
    scanf(“%d”,&dp);
    printf(“enter position”);
    scanf(“%d”,&pos);
    newnode->data=dp;
    newnode->link=NULL;
    while((i<pos)&&(temp->link!=NULL))
    {
        temp=temp->link;
        i++;
    }
    temp->link=newnode->link;
    temp->link=newnode;
}
void delatbegin()
{
    node *temp=start;
    if(start==NULL)
    {
        printf(“node cant be deleted”);

    }
    else
    {
        start=start->link;
        free(temp);
    }
}
void delatlast()
{
    node *prev,*cur;
    if(start==NULL)
    {
        printf(“list is empty”);
    }
    else
    {
        cur=start;
        while(cur->link!=NULL)
        {
            prev=cur;
            cur=cur->link;
        }
        prev->link=NULL;
        free(cur);

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