void Mergelist( vector<ListNode*> &lists, ListNode* &lastnode){ int min=-1, val=INT_MAX; for( int i=0; i<lists.size(); i++){ if( lists[i] ==NULL ) continue; if( lists[i]->val <val){ val=lists[i]->val; min=i; } } if( min==-1 ) return ; if( lastnode ==NULL ){ lastnode=lists[min]; lists[min]=lists[min]->next; Mergelist(lists,lastnode); } else{ lastnode->next=lists[min]; lists[min]=lists[min]->next; Mergelist(lists,lastnode->next); } }
int main(){ Sqlist La,Lb,Lc; int i=1; ElemType num = 0; Initlist(&La); Initlist(&Lb); printf("plsase input LIST A,-1 to end\n"); while(1){ scanf("%d",&num); if(num == -1) break; Insertlist(&La,i,num); i++; } Showlist(&La); i = 1; printf("please input LIST B,-1 to end\n"); while(1){ scanf("%d",&num); if(num == -1) break; Insertlist(&Lb,i,num); i++; } Showlist(&Lb); Mergelist(La,Lb,&Lc); printf("MERGE DONE!\n"); Showlist(&Lc); return 0; }
ListNode *mergeKLists(vector<ListNode *> &lists) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode* head=NULL; if(lists.size() ==0) return head; Mergelist(lists, head); return head; }
int main(){ Sqlist La,Lb,Lc; int i=1; // ElemType num = 0; ElemType num = '0'; //if it misunderstand you,rename it char Initlist(&La); Initlist(&Lb); printf("plsase input LIST A,q to end\n"); while(1){ scanf("%c",&num); if(num == 'q' ||num =='Q') break; Insertlist(&La,i,num); i++; } // Sortlist(&La); Showlist(&La); i = 1; printf("please input LIST B,q to end\n"); while(1){ // scanf("%d",&num); scanf("%c",&num); if(num == 'q' ||num =='Q') break; Insertlist(&Lb,i,num); i++; } // Sortlist(&Lb); Showlist(&Lb); /* printf("IS THERE any element you want to delete from list b,enter the positon,0 means no action\n"); int n; scanf("%d",&n); if(n=0) return 0; else Deletelist(&Lb,n); Showlist(&Lb); */ Mergelist(La,Lb,&Lc); // printf("MERGE DONE!\n"); // Showlist(&Lc); return 0; }