Problem Statement: Merge and Sort two linked list
/*C code to Merge and Sort two linked list*/ #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct linklist link; struct linklist { int n; link *next; }; link *createlist(int a) { link *l1starttt,*temp,*newnode; int i; for(i=0;i<a;i++) { if(i==0) { newnode=(link *)malloc(sizeof(link)); l1starttt=newnode; newnode->next=NULL; temp=newnode; printf("enter data"); scanf("%d",&(newnode->n)); } else { newnode=(link *)malloc(sizeof(link)); newnode->next=NULL; temp->next=newnode; temp=newnode; printf("enter data"); scanf("%d",&(newnode->n)); } } return l1starttt; } link *mergelist(link *l1,link *l2) { link *l1start=l1; while(l1start->next!=NULL) { l1start=l1start->next; } l1start->next=l2; } link *sort(link *l1) { int temp; link *l3,*l2; l2=l1; while(l2!=NULL) { for(l3=l2;l3!=NULL;l3=l3->next) { if(l3->n<l2->n) { temp=l3->n; l3->n=l2->n; l2->n=temp; } } l2=l2->next; } } void main() { int n,m; printf("Number of elements in first list\t"); scanf("%d",&n); printf("Number of elements in second list\t"); scanf("%d",&m); link *l1start,*l2start; l1start=createlist(n); l2start=createlist(m); mergelist(l1start,l2start); sort(l1start); /* printf("\n"); printf("%d",l1start); printf("\n"); printf("%d",l2start); while(l1start!=NULL) { printf("%d\t",l1start->n); l1start=l1start->next; } printf("\n"); while(l2start!=NULL) { printf("%d\t",l2start->n); l2start=l2start->next; }*/ printf("\n"); while(l1start!=NULL) { printf("%d\t",l1start->n); l1start=l1start->next; } }
$ gcc link1.c $ ./a.out Number of elements in first list 3 Number of elements in second list 2 enter data1 enter data7 enter data2 enter data3 enter data41 2 3 4 7 $ |
also see
C Programming language |
Go Programming language |
Linked List | Array |
Simplification | Queue |
DBMS | Reasoning |
Aptitude | HTML |