#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<alloc.h>
void create();
void delbeg();
void delend();
void delkpos();
void delel();
void display();
struct node
{
int info;
struct node *link;
}*start=NULL;
void main()
{
char ans;
int ch;
clrscr();
do
{
printf("\nSelect any one");
printf("\n1. Create list");
printf("\n2. Deletion from beginning");
printf("\n3. Deletion from end");
printf("\n4. Deletion from 'Kth' position");
printf("\n5. Deletion of a particular element");
printf("\n6. Display list");
printf("\n7. Exit");
scanf("%d",&ch);
switch(ch)
{
case 1: create();
break;
case 2: delbeg();
break;
case 3: delend();
break;
case 4: delkpos();
break;
case 5: delel();
break;
case 6:display();
break;
case 7: exit(-1);
}
printf("\nDo you wish to continue?");
flushall();
scanf("%c",&ans);
}while(ans=='y' || ans=='Y');
getch();
}
void create()
{
struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
printf("\nEnter info");
scanf("%d",&temp->info);
temp->link=NULL;
if(start==NULL)
{
start=temp;
}
else
{
struct node *ptr=start;
while(ptr->link!=NULL)
{
ptr=ptr->link;
}
ptr->link=temp;
}
}
void delbeg()
{
struct node *ptr=start;
if(start==NULL)
{
printf("\nEmpty list,can't delete");
return;
}
printf("\n%d element is being deleted",start->info);
start=start->link;
free(ptr);
}
void delend()
{
struct node *ptr=start;
if(start==NULL)
{
printf("\nEmpty list,can't delete");
return;
}
while(ptr->link->link!=NULL)
ptr=ptr->link;
printf("\n%d element is being deleted",ptr->link->info);
free(ptr->link);
ptr->link=NULL;
}
void delkpos()
{
int k;
printf("\nEnter position");
scanf("%d",&k);
if(start==NULL)
{
printf("\nEmpty list,can't delete");
return;
}
else if(k==1)
{
struct node *ptr=start;
printf("\n%d element is being deleted",start->info);
start=start->link;
free(ptr);
}
else
{
int i;
struct node *ptr=start,*temp;
for(i=1;i<=k-2;i++)
{
ptr=ptr->link;
if(ptr->link==NULL)
{
printf("\nList is short,can't delete");
return;
}
}
printf("\n%d element is being deleted",ptr->link->info);
temp=ptr->link;
ptr->link=ptr->link->link;
free(temp);
}
}
void delel()
{
int item;
struct node *ptr,*prev;
printf("\nEnter info to be deleted");
scanf("%d",&item);
ptr=start;
while((ptr!=NULL)&&(ptr->info!=item))
{
prev=ptr;
ptr=ptr->link;
}
if(ptr->info==item)
{
printf("\n%d element is being deleted",ptr->info);
prev->link=ptr->link;
free(ptr);
}
else
{
printf("\nElement not found");
}
}
void display()
{
struct node *ptr=start;
while(ptr!=NULL)
{
printf("\n%d",ptr->info);
ptr=ptr->link;
}
}