Untitled
unknown
plain_text
3 years ago
5.1 kB
2
Indexable
#include<stdio.h> #include<stdlib.h> struct node { int x; struct node *next; }; typedef struct node node; node *insert_beg(node *); node *insert_end(node *); node *insert_spec(node *); void display(node *); node *dlt_beg(node *); node *dlt_end(node *); node *dlt_target(node *); void search(node *); int count(node *); int main() { int n,c; node *start=NULL; do{ printf("\n 1)Insert Node\n 2)Delete Node\n 3)Searching Node\n 4)count number of nodes\n 5)Display\n 6)Exit"); printf("\n Enter your choice (1-6) :"); scanf("%d",&n); switch(n) { case 1:printf("\n 1)Insert at begining\n 2)Insert at End\n 3)Insert node at specific location"); printf("\n Enter your choice (1-3) :"); scanf("%d",&c); switch(c) { case 1:start=insert_beg(start); break; case 2:start=insert_end(start); break; case 3:start=insert_spec(start); break; default :printf("\n inavlid option"); } break; case 2:printf("\n 1)Deletion from start\n 2)Deletion from End\n 3)Delete node of a specific location"); printf("\n Enter your choice (1-3) :"); scanf("%d",&c); switch(c) { case 1:start=dlt_beg(start); break; case 2:start=dlt_end(start); break; case 3:start=dlt_target(start); break; default :printf("\n Invalid option"); } break; case 3:search(start); break; case 4:printf("\n Number of node=%d",count(start)); break; case 5:display(start); break; case 6:printf("\n ...Thankyou!..."); break; default :printf("\n Invalid choice"); } }while(n!=6); return 0; } node *insert_beg(node *start) { node *ptr; int n; ptr=(node *)malloc(sizeof(node)); printf("\n Enter node value="); scanf("%d",&n); if(start==NULL) { ptr->x=n; start=ptr; ptr->next=NULL; return start; } ptr->x=n; ptr->next=start; start=ptr; return start; } node *insert_end(node *start) { node *ptr,*fpt=start; int n; ptr=(node *)malloc(sizeof(node)); printf("\n Enter node value="); scanf("%d",&n); if(start==NULL) { ptr->x=n; start=ptr; ptr->next=NULL; return start; } while(fpt->next!=NULL) fpt=fpt->next; ptr->x=n; fpt->next=ptr; ptr->next=NULL; return start; } node *insert_spec(node *start) { int c=count(start); int n,x=1,t; node *ptr,*fpt=start,*p=start; printf("\n Enter node number you want to insert="); scanf("%d",&n); if(n>c+1) { printf("\n %dth node is not avialabe.plz enter valid node number"); return start; } printf("\n Enter node value="); scanf("%d",&t); ptr=(node *)malloc(sizeof(node)); while(p!=NULL) { if(x==n) { ptr->x=t; if(x==1) { ptr->next=start; start=ptr; } else if(x==c+1) { p->next=ptr; ptr->next=NULL; } else { ptr->next=fpt; p->next=ptr; } break; } x++; p=fpt; fpt=fpt->next; } return start; } void display(node *start) { node *ptr=start; if(start==NULL) { printf("\n List is Empty"); return; } printf("\n List is :"); while(ptr!=NULL) { printf("%d ",ptr->x); ptr=ptr->next; } return ; } int count(node *start) { node *ptr=start; int c=0; while(ptr!=NULL) { c++; ptr=ptr->next; } return c; } void search(node *start) { node *ptr=start; int n,flag=0; if(start==NULL) { printf("\n List is empty"); return; } printf("\n Enter searching node value="); scanf("%d",&n); while(ptr!=NULL) { if(ptr->x==n) { flag=1; break; } else ptr=ptr->next; } if(flag==1) printf("\n %d node is found",n); else if(flag==0) printf("\n node not found"); return ; } node *dlt_beg(node *start) { if(start==NULL) { printf("\n List is empty"); return NULL; } node *ptr=start; start=ptr->next; free(ptr); printf("\n first node is deleted"); return start; } node *dlt_end(node *start) { node *fpt,*ptr=start; if(start==NULL) { printf("\n List is empty"); return NULL; } if(ptr->next==NULL) { free(ptr); return NULL; } while(ptr->next!=NULL) { fpt=ptr; ptr=ptr->next; } fpt->next=NULL; free(ptr); printf("\n last node is deleted"); return start; } node *dlt_target(node *start) { node *fpt=start,*ptr=start; int n,x=1,flag=0; int c=count(start); if(start==NULL) { printf("\n List is empty"); return NULL; } printf("\n enter node number that you want to delete="); scanf("%d",&n); if(n>c) { printf("\n invalid node number"); return start; } while(ptr!=NULL) { if(x==n) { flag=1; if(x==1) start=ptr->next; else if(x==c) fpt->next=NULL; else fpt->next=ptr->next; break; } x++; fpt=ptr; ptr=ptr->next; } if(flag==0) printf("\n target node is not found"); else if(flag==1) printf("\n %dth node is deleted",n); free(ptr); return start; }
Editor is loading...