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;
}
}