#include<stdio.h>
#include<conio.h>
struct node
{
int no;
struct node *next;
};
struct node *head;
struct node *p;
struct node *temp;
int ch1;
void main()
{
void ins();
void del();
void disp();
int ctr,num;
char ch;
clrscr();
head = (struct node *)malloc(sizeof(struct node));
printf("\nEnter the no::");
flushall();
scanf("%d",&head->no);
printf("\nDo u want to create another node::");
flushall();
scanf("%c",&ch);
p=head;
while(ch=='y' || ch=='Y')
{
p->next=(struct node *)malloc(sizeof(struct node));
p=p->next;
printf("\nEnter the no::");
flushall();
scanf("%d",&p->no);
printf("\nDo u want to create another node::");
flushall();
scanf("%c",&ch);
}
p->next=NULL;
clrscr();
printf("\n1)Insert \n2)Delete \n3)Traverse");
flushall();
scanf("%d",&num);
if(num==1)
{
ins();
}
if(num==2)
{
del();
}
if(num==3)
{
disp();
}
getch();
}
void disp()
{
temp=head;
while(temp!=NULL)
{
printf("\n%d",temp->no);
temp=temp->next;
}
}
void ins()
{
int af;
printf("\n1)Begining\n2)Middle\n3)End");
flushall();
scanf("%d",&ch1);
temp=(struct node*)malloc(sizeof(struct node));
printf("\nEnter the no::");
flushall();
scanf("%d",&temp->no);
if(ch1==1)
{
temp->next=head;
head=temp;
disp();
}
if(ch1==2)
{
p=head;
printf("\nAfter which node u want to insert::");
flushall();
scanf("%d",&af);
while(p->no!=af)
{
p=p->next;
}
temp->next=p->next;
p->next=temp;
disp();
}
if(ch1==3)
{
p=head;
while(p->next!=NULL)
{
p=p->next;
}
p->next=temp;
temp->next=NULL;
disp();
}
}
void del()
{
int num,af;
printf("\n1)Begining\n2)Middle\n3)End");
flushall();
scanf("%d",&num);
if(num==1)
{
p=head;
head=p->next;
free(p);
disp();
}
if(num==2)
{
p=head;
printf("\nAfter which node u want to del::");
flushall();
scanf("%d",&af);
while(p->no!=af)
{
p=p->next;
}
temp=p->next;
p->next=temp->next;
free(temp);
disp();
}
if(num==3)
{
p=head;
while(p->next->next!=NULL)
{
p=p->next;
}
temp=p->next;
p->next=NULL;
free(temp);
disp();
}
}