Simple C program for the insertion, deletion and reversal of a link list. If you have any doubts, please let me know.
#include<stdio.h> #include<stdlib.h> struct node { int data; struct node *next; }*start=NULL,*newn,*temp,*prev,*ptr,*rev; int num,pos,ele; void insert_beg(); void insert_end(); void insert_aftr(); void insert_pos(); void delete_beg(); void delete_end(); void delete_ele(); void display(); void reverse(); main() { int ch,c,ch1,c1,ch2,c2; do { printf("\n MENU\n1.Insert\n2.Delete\n3.Reverse\n4.Display"); printf("\nEnter your choice:"); scanf("%d",&ch); switch(ch) { case 1:do { printf("\nINSERT\n1.At beginning\n2.At End\n3.After a node\n4.At a position\n5.Display"); printf("\nEnter your choice:"); scanf("%d",&ch1); switch(ch1) { case 1:insert_beg(); break; case 2:insert_end(); break; case 3:insert_aftr(); break; case 4:insert_pos(); break; case 5:display(); break; default:printf("\nWrong Choice"); break; } printf("\nDo you want to continue-Insert Menu?(1.Yes;2.No):"); scanf("%d",&c1); }while(c1!=2); break; case 2:do { printf("\nDELETE\n1.At Front\n2.At End\n3.A specific node\n4.Display"); printf("\nEnter your choice:"); scanf("%d",&ch2); switch(ch2) { case 1:delete_beg(); break; case 2:delete_end(); break; case 3:delete_ele(); break; case 4:display(); break; default:printf("\nWrong Choice"); break; } printf("\nDo you want to continue-Delete Menu?(1.Yes;2.No):"); scanf("%d",&c2); }while(c2!=2); break; case 3:reverse(); break; case 4:display(); break; default:printf("Wrong Choice"); break; } printf("\nDo you want to continue-Main Menu?(1.Yes;2.No):"); scanf("%d",&c); }while(c!=2); } void display() { if(start==NULL) printf("\nLink List is empty\n"); else { temp=start; while(temp!=NULL) { printf(" %d",temp->data); temp=temp->next; } } } void reverse() { if(start==NULL) printf("\nLink List is empty\n"); else { temp=start; prev=NULL; while(temp!=NULL) { rev=prev; prev=temp; temp=temp->next; prev->next=rev; } start=prev; } } void insert_beg() { printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; if(start==NULL) newn->next=NULL; else newn->next=start; start=newn; } void insert_end() { printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; if(start==NULL) { newn->next=NULL; start=newn; } else { temp=start; while(temp->next!=NULL) { temp=temp->next; } temp->next=newn; newn->next=NULL; } } void insert_aftr() { int flag=0; if(start==NULL) printf("\nLink List is empty\n"); else { printf("\nEnter the element after which insertion must be done:"); scanf("%d",&ele); printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; temp=start; while(temp!=NULL) { if(temp->data==ele) { newn->next=temp->next; temp->next=newn; flag=1; break; } temp=temp->next; } if(flag==0) printf("\nElement not found\n"); } } void insert_pos() { int k=1,flag=0; printf("\nEnter the position for insertion:"); scanf("%d",&pos); if(pos==1) insert_beg(); else { printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; temp=start->next; prev=start; while(temp!=NULL) { k++; if(k==pos) { newn->next=temp; prev->next=newn; flag=1; break; } prev=temp; temp=temp->next; } if(flag==0) printf("\nPosition not found\n"); } } void delete_beg() { if(start==NULL) printf("\nLink List is empty\n"); else { temp=start; start=start->next; free(temp); } } void delete_end() { if(start==NULL) printf("\nLink List is empty\n"); else if(start->next==NULL) delete_beg(); else { temp=start; while(temp->next!=NULL) { prev=temp; temp=temp->next; } prev->next=NULL; free(temp); } } void delete_ele() { int flag=0; if(start==NULL) printf("\nLink List is empty\n"); else { printf("\nEnter the element to be deleted:"); scanf("%d",&num); temp=start; while(temp!=NULL) { if(start->data==num) { delete_beg(); flag=1; temp=start; } else if(temp->data==num) { ptr=temp; prev->next=temp->next; temp=temp->next; free(ptr); flag=1; } prev=temp; temp=temp->next; } if(flag==0) printf("\nElement not found\n"); } }
#include<stdio.h> #include<stdlib.h> struct node { int data; struct node *next; }*start=NULL,*newn,*temp,*prev,*ptr,*rev; int num,pos,ele; void insert_beg(); void insert_end(); void insert_aftr(); void insert_pos(); void delete_beg(); void delete_end(); void delete_ele(); void display(); void reverse(); main() { int ch,c,ch1,c1,ch2,c2; do { printf("\n MENU\n1.Insert\n2.Delete\n3.Reverse\n4.Display"); printf("\nEnter your choice:"); scanf("%d",&ch); switch(ch) { case 1:do { printf("\nINSERT\n1.At beginning\n2.At End\n3.After a node\n4.At a position\n5.Display"); printf("\nEnter your choice:"); scanf("%d",&ch1); switch(ch1) { case 1:insert_beg(); break; case 2:insert_end(); break; case 3:insert_aftr(); break; case 4:insert_pos(); break; case 5:display(); break; default:printf("\nWrong Choice"); break; } printf("\nDo you want to continue-Insert Menu?(1.Yes;2.No):"); scanf("%d",&c1); }while(c1!=2); break; case 2:do { printf("\nDELETE\n1.At Front\n2.At End\n3.A specific node\n4.Display"); printf("\nEnter your choice:"); scanf("%d",&ch2); switch(ch2) { case 1:delete_beg(); break; case 2:delete_end(); break; case 3:delete_ele(); break; case 4:display(); break; default:printf("\nWrong Choice"); break; } printf("\nDo you want to continue-Delete Menu?(1.Yes;2.No):"); scanf("%d",&c2); }while(c2!=2); break; case 3:reverse(); break; case 4:display(); break; default:printf("Wrong Choice"); break; } printf("\nDo you want to continue-Main Menu?(1.Yes;2.No):"); scanf("%d",&c); }while(c!=2); } void display() { if(start==NULL) printf("\nLink List is empty\n"); else { temp=start; while(temp!=NULL) { printf(" %d",temp->data); temp=temp->next; } } } void reverse() { if(start==NULL) printf("\nLink List is empty\n"); else { temp=start; prev=NULL; while(temp!=NULL) { rev=prev; prev=temp; temp=temp->next; prev->next=rev; } start=prev; } } void insert_beg() { printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; if(start==NULL) newn->next=NULL; else newn->next=start; start=newn; } void insert_end() { printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; if(start==NULL) { newn->next=NULL; start=newn; } else { temp=start; while(temp->next!=NULL) { temp=temp->next; } temp->next=newn; newn->next=NULL; } } void insert_aftr() { int flag=0; if(start==NULL) printf("\nLink List is empty\n"); else { printf("\nEnter the element after which insertion must be done:"); scanf("%d",&ele); printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; temp=start; while(temp!=NULL) { if(temp->data==ele) { newn->next=temp->next; temp->next=newn; flag=1; break; } temp=temp->next; } if(flag==0) printf("\nElement not found\n"); } } void insert_pos() { int k=1,flag=0; printf("\nEnter the position for insertion:"); scanf("%d",&pos); if(pos==1) insert_beg(); else { printf("\nEnter the element to be inserted:"); scanf("%d",&num); newn=(struct node*)malloc(sizeof(struct node)); newn->data=num; temp=start->next; prev=start; while(temp!=NULL) { k++; if(k==pos) { newn->next=temp; prev->next=newn; flag=1; break; } prev=temp; temp=temp->next; } if(flag==0) printf("\nPosition not found\n"); } } void delete_beg() { if(start==NULL) printf("\nLink List is empty\n"); else { temp=start; start=start->next; free(temp); } } void delete_end() { if(start==NULL) printf("\nLink List is empty\n"); else if(start->next==NULL) delete_beg(); else { temp=start; while(temp->next!=NULL) { prev=temp; temp=temp->next; } prev->next=NULL; free(temp); } } void delete_ele() { int flag=0; if(start==NULL) printf("\nLink List is empty\n"); else { printf("\nEnter the element to be deleted:"); scanf("%d",&num); temp=start; while(temp!=NULL) { if(start->data==num) { delete_beg(); flag=1; temp=start; } else if(temp->data==num) { ptr=temp; prev->next=temp->next; temp=temp->next; free(ptr); flag=1; } prev=temp; temp=temp->next; } if(flag==0) printf("\nElement not found\n"); } }
No comments:
Post a Comment