Linked list in C

/* Linked list is a linear data structure like an Array but it has capablity to store data as many as user want in a form of Nodes. Here is a simple linked list program includes Create,display and insertion operations*/ #include #include #include struct node { int data; struct node *link; }*header,*header2; void create(int); void display(); void display2(); void insert_at_first(int); void insert_at_last(int); void delete_first(); void delete_last(); void sort(); void split(int); void merge(); void main(){ int m,i,n,c; printf("\nWelcome to Linked List Program created by Manshal Khatri"); // Creation and Display printf("\nHow many Nodes you want in Linkedlist?"); scanf("%d",&n); for(i=0;idata=x; tmp->link=NULL; if(header==NULL){ header=tmp; }else{ ptr=header; while(ptr->link!=NULL){ ptr=ptr->link; } ptr->link=tmp; } } void display(){ struct node *ptr; if(header==NULL){ printf("List is empty :("); }else{ ptr=header; printf("\n The list is "); while(ptr!=NULL){ printf(" ->%d",ptr->data); ptr=ptr->link; } } } void display2(){ struct node *ptr; if(header2==NULL){ printf("List is empty :("); }else{ ptr=header2; printf("\n The list is "); while(ptr!=NULL){ printf(" ->%d",ptr->data); ptr=ptr->link; } } } void insert_at_first(int x){ struct node *tmp; tmp=(struct node*)malloc(sizeof(struct node)); tmp->data=x; tmp->link=NULL; if(header==NULL){ header=tmp; }else{ tmp->link=header; header=tmp; } } void insert_at_last(int x){ create(x); } void delete_first(){ struct node *ptr; if(header==NULL){ printf("Deletion not possible!"); }else{ ptr=header; header=ptr->link; free(ptr); } } void delete_last(){ struct node *ptr,*ptr1; if(header==NULL){ printf("Deletion not possible!"); }else{ ptr=header; while(ptr->link!=NULL){ ptr1=ptr; ptr=ptr->link; } ptr1->link=NULL; free(ptr); } } void sort(){ struct node *ptr,*count,*count2; int tmp; if(header==NULL){ printf("\n List is empty"); }else{ for(ptr=header;ptr->link!=NULL;ptr=ptr->link){ for(count=header;count->link!=NULL;count=count->link){ count2=count->link; if(count->data>count2->data){ tmp=count->data; count->data=count2->data; count2->data=tmp; } } } } } void split(int x){ struct node *ptr; int key=1; if(header==NULL){ printf("\nlist is empty"); }else{ ptr=header; while(x!=key && ptr->link!=NULL){ ptr=ptr->link; key++; } header2=ptr->link; ptr->link=NULL; } } void merge(){ struct node *ptr; if(header==NULL || header2==NULL){ printf("\nList is Empty"); }else{ ptr=header; while(ptr->link!=NULL){ ptr=ptr->link; } ptr->link=header2; header2=NULL; } }

Comments

Popular posts from this blog