#include<stdio.h> | |
#include<conio.h> #include<stdlib.h> | |
struct node | |
{ | |
int data; | |
struct node *next; | |
}; | |
struct node *head=NULL,*tail=NULL,*temp,*prev,*newnode; | |
void createnode() | |
{ | |
newnode=(struct node*)malloc(sizeof(struct node)); | |
if(newnode==NULL) | |
{ | |
printf("Memory is not allocated.....\n"); | |
exit(0); | |
} | |
else | |
{ | |
printf("Enter the element to store...\t"); | |
scanf_s("%d",&newnode->data); | |
newnode->next=NULL; | |
} | |
} | |
void createlist() | |
{ | |
int ch=1; | |
while(ch) | |
{ | |
createnode(); | |
if(head==NULL) | |
head=tail=newnode; | |
else | |
{ | |
tail->next=newnode; | |
tail=newnode; | |
} | |
printf("Do you want to insert element again prees 1...\t"); | |
scanf_s("%d",&ch); | |
} | |
} | |
void display() | |
{ | |
if(head==NULL) | |
printf("list is empty...\n"); | |
else | |
{ | |
temp=head; | |
while(temp!=NULL) | |
{ | |
printf("%d\n",temp->data); | |
temp=temp->next; | |
} | |
} | |
} | |
void insertfirst() | |
{ | |
createnode(); | |
if(head==NULL) | |
head=tail=newnode; | |
else | |
{ | |
newnode->next=head; | |
head=newnode; | |
} | |
} | |
void insertlast() | |
{ | |
createnode(); | |
if(head==NULL) | |
head=tail=newnode; | |
else | |
{ | |
tail->next=newnode; | |
tail=newnode; | |
} | |
} | |
void insertinter() | |
{ | |
int pos,i=1; | |
printf("Enter the position to insert.....\t"); | |
scanf_s("%d",&pos); | |
createnode(); | |
if(head==NULL) | |
head=tail=newnode; | |
else | |
{ | |
temp=head; | |
while(temp!=NULL && i<pos-1) | |
{ | |
i=i+1; | |
temp=temp->next; | |
} | |
if(temp==NULL) | |
{ | |
printf("There is no position in the list....\n"); | |
free(newnode); | |
} | |
else | |
{ | |
newnode->next=temp->next; | |
temp->next=newnode; | |
} | |
} | |
} | |
void delefrst() | |
{ | |
if(head==NULL) | |
printf("List is empty..........\n"); | |
else | |
{ | |
temp=head; | |
head=head->next; | |
free(temp); | |
} | |
} | |
void delelast() | |
{ | |
if(head==NULL) | |
printf("List is empty.....\n"); | |
else | |
{ | |
temp=head->next; | |
if(temp==NULL) | |
{ | |
head=NULL; | |
free(temp); | |
} | |
else | |
{ | |
prev=head; | |
while(temp->next!=NULL) | |
{ | |
prev=temp; | |
temp=temp->next; | |
} | |
prev->next=NULL; | |
tail=prev; | |
free(temp); | |
} | |
} | |
} | |
void deleinter() | |
{ | |
int pos,i=1; | |
if(head==NULL) | |
printf("List is empty.....\n"); | |
else | |
{ | |
printf("Enter the position to delete..\t"); | |
scanf_s("%d",&pos); | |
temp=head; | |
if(pos==1) | |
{ | |
head=head->next; | |
free(temp); | |
} | |
else | |
{ | |
while(temp!=NULL&&i<pos-1) | |
{ | |
temp=temp->next; | |
i=i+1; | |
} | |
if(temp==NULL) | |
printf("There is no positon in the list...\n"); | |
else | |
{ | |
prev=temp; | |
temp=temp->next; | |
prev->next=temp->next; | |
free(temp); | |
} | |
} | |
} | |
} | |
void search() | |
{ | |
int k; | |
if(head==NULL) | |
printf("list is empty....\n"); | |
else | |
{ | |
printf("Enter the element....\t"); | |
scanf("%d",&k); | |
temp=head; | |
while(temp!=NULL) | |
{ | |
if(k==temp->data) | |
{ | |
printf("Given element is found...\n"); | |
break; | |
} | |
temp=temp->next; | |
} | |
if(temp==NULL) | |
printf("Given element is not found...\n"); | |
} | |
} | |
void main() | |
{ | |
int ch=1; | |
while(ch) | |
{ | |
printf("1.create list\t2.display\t3.insertfirst\n4.insertlast\t5.insertinter\t6.deletefirst\t7.delelast\n8.deleinter\t9.searching\n"); | |
printf("Enter your choioce...\t"); | |
scanf_s("%d",&ch); | |
switch(ch) | |
{ | |
case 1: | |
createlist(); | |
break; | |
case 2: | |
display(); | |
break; | |
case 3: | |
insertfirst(); | |
break; | |
case 4: | |
insertlast(); | |
break; | |
case 5: | |
insertinter(); | |
break; | |
case 6: | |
delefrst(); | |
break; | |
case 7: | |
delelast(); | |
break; | |
case 8: | |
deleinter(); | |
break; | |
case 9: | |
search(); | |
break; | |
default: | |
printf("List is empty...\n"); | |
} | |
} | |
} |