#include<stdio.h>
#include<conio.h>
#include<malloc.h>
struct link
{
int data;
struct link *next;
};struct link *nw, *head, *tail, *temp1, *temp2;
void insert_begin();
void insert_middle();
void insert_end();
void delete_begin();
void delete_middle();
void delete_end();
void display();
void main()
{
int item,ch;
do
{
clrscr();
printf("1. Insert Node of Beginning : \n2. Insert Node of middle any Posistion\n3. Insert Node of Ending : \n4. Delete Node of Beginning\n5. Delete Node of middle any position\n6. Delete Node of Ending\n7. Disple\n8. Exit\n\n ");
printf("Enter Your Choice : ");
scanf("%d",&ch);
switch(ch)
{
case 1:
insert_begin();
break;
case 2:
insert_middle();
break;
case 3:
insert_end();
break;
case 4:
delete_begin();
break;
case 5:
delete_middle();
break;
case 6:
delete_end();
break;
case 7:
display();
break;
case 8:
printf("Thank U");
break;
}
}while(ch != 8);
}
///////////////////////////////////////////
void insert_begin()
{
int item;
clrscr();
nw=(struct link *)malloc(sizeof (struct link));
printf("Enter the Data of Node : ",&item);
scanf("%d",&item);
nw -> data = item;
nw -> next = head;
head = nw;
}
void insert_middle()
{
int item,pos,i;
clrscr();
temp1=head;
temp2=head;
printf("Enter the positon : ");
scanf("%d",&pos);
printf("Enter the Data of Node : ");
scanf("%d",&item);
for(i=1;i<pos-1;i++)
{
temp1 = temp1->next;
}
temp2=temp1->next;
nw = (struct link *)malloc(sizeof (struct link));
nw -> data = item;
nw -> next = temp2;
temp1 -> next = nw;
printf("node enerd ");
getch();
}
void insert_end()
{
int item;
clrscr();
temp1 = head;
printf("Enter Item : ");
scanf("%d",&item);
while(temp1->next != NULL)
{
temp1 = temp1 -> next;
}
nw = (struct link *)malloc(sizeof (struct link));
nw -> data = item;
temp1 -> next = nw;
nw -> next = NULL;
}
void delete_begin()
{
struct link *temp;
clrscr();
temp = head;
head = head->next;
printf("%d Node is Deletion",temp->data);
free(temp);
getch();
}
void delete_middle()
{
int pos,i;
clrscr();
printf("Enter Position : ");
scanf("%d",&pos);
temp1 = head;
temp2 = head;
for(i=1;i<pos-1;i++)
{
temp1 = temp1 -> next;
}
temp2 = temp1 -> next;
temp1 -> next = temp2 -> next;
free(temp2);
}
void delete_end()
{
clrscr();
temp1 = head;
while(temp1->next != NULL)
{
temp2=temp1;
temp1 = temp1 -> next;
}
printf("%d Node is Delete.",temp1->data);
free(temp2->next);
temp2->next = NULL;
getch();
}
void display()
{
struct link *temp;
clrscr();
temp = head;
while(temp != NULL)
{
printf("\n\t%d",temp->data);
temp = temp -> next;
}
getch();
}