Following is the program to implement linked list in c c++
PROGRAM:
#include<stdio.h> #include<malloc.h> #include<process.h> struct node { int info; struct node *next; }; typedef struct node sn; void insertatbeg(sn **,int); void insertatend(sn **,int); void insertatpos(sn **,int,int); void traverse(sn *); int delfirst(sn *); int dellast(sn *); int delpos(sn *,int); int count(sn *); int main() { sn *p; int n,i,l; char ch; p=NULL; do { printf("n-----SELECT AN OPERATION-----"); printf("n1->To insert an item at begining<-"); printf("n2->To insert an item at end<-"); printf("n3->To insert an item at position<-"); printf("n4->To traverse the list<-"); printf("n5->To delete first item<-"); printf("n6->To delete last item<-"); printf("n7->To delete item from position<-"); printf("n8->To count no. of items in list<-"); printf("n9->Exit<-"); printf("n->Enter your choice:"); scanf("%d",&n); switch(n) { case 1:printf("n->Enter the item to insert: "); scanf("%d",&i); insertatbeg(&p,i); break; case 2:printf("n->Enter the item to insert: "); scanf("%d",&i); insertatend(&p,i); break; case 3:printf("n->Enter the item to insert: "); scanf("%d",&i); printf("n->Enter the position: "); scanf("%d",&l); insertatpos(&p,i,l); break; case 4:traverse(p); break; case 5:i=delfirst(p); printf("nItem deleted is %d.",i); break; case 6:i=dellast(p); printf("nItem deleted is %d.",i); break; case 7:printf("n->Enter the position"); scanf("%d",&l); i=delpos(p,l); printf("nItem deleted is %d.",i); break; case 8:i=count(p); printf("nNumber of nodes in list are %d.",i); break; case 9:exit(0); break; default:printf("n->You have entered wrong choice"); } printf("n->Do you want to continue/exit(y/n)"); fflush(stdin); scanf("%c",&ch); } while((ch=='y')||(ch=='Y')); } int count(sn *p) { sn *temp; int c=1; temp=p; while((temp->next)!=NULL) { c++; temp=temp->next; } return c; } void insertatbeg(sn **p,int item) { sn *ptr; ptr=(sn *)malloc(sizeof(sn)); ptr->info=item; if(*p==NULL) ptr->next=NULL; else ptr->next=*p; *p=ptr; } void insertatend(sn **p,int item) { sn *ptr,*temp; ptr=(sn *)malloc(sizeof(sn)); ptr->info=item; ptr->next=NULL; if(*p==NULL) *p=ptr; else { temp=*p; while((temp->next)!=NULL) temp=temp->next; temp->next=ptr; } } void insertatpos(sn **p,int item,int loc) { sn *ptr,*temp,*s; int i,c; temp=*p; ptr=(sn *)malloc(sizeof(sn)); ptr->info=item; c=count(*p); if(loc>c) printf("nList is short,Item can't inserted"); else { for(i=0;i<loc-1;i++) { s=temp; temp=temp->next; } ptr->next=s->next; s->next=ptr; } } void traverse(sn *p) { sn *temp; if(p==NULL) printf("nList is empty."); else { temp=p; while((temp->next)!=NULL) { printf("nno.=%d",temp->info); temp=temp->next; } printf("nno.=%d",temp->info); } } int delfirst(sn *p) { int item; sn *temp; if(p==NULL) { printf("nList is empty"); return 0; } else { temp=p; p=p->next; item=temp->info; free(temp); return item; } } int dellast(sn *p) { int item; sn *temp,*s; if(p==NULL) { printf("nList is empty"); return 0; } else { temp=p; while((temp->next)!=NULL) { s=temp; temp=temp->next; } item=temp->info; s->next=NULL; free(temp); return item; } } int delpos(sn *p,int loc) { int item,i,c; sn *temp,*s; c=count(p); if(p==NULL) { printf("nList is empty"); return 0; } else { if(loc>c) { printf("nItem is not in list."); return 0; } else { temp=p; for(i=0;i<loc-1;i++) { s=temp; temp=temp->next; } item=temp->info; s->next=temp->next; free(temp); return item; } } }