int main() { ListNode p1={2,NULL}; ListNode p2={1,NULL}; ListNode * l1 = &p1; ListNode *l2 = &p2; mergeTwoList(l1,l2); return 0; }
ListNode* sortList(ListNode* head) { if(!head || !head->next) return head; ListNode *fast=head, *slow=head; // find the middle while(!fast->next && !fast->next->next) { fast=fast->next->next; slow=slow->next; } // when stop, fast points to the last element fast=slow; slow=slow->next; // break into two lists fast->next=NULL; ListNode *l1=sortList(head); ListNode *l2=sortList(slow); head = mergeTwoList(l1, l2); return head; }
///// 主函数 int main() { int numberA, numberB; printf("请输入a,b表长:"); while(scanf("%d%d",&numberA,&numberB)) { printf("-----------------------------------------\n"); LinkList a; printf("a表:\n"); creatList(a,numberA); //printList(a); LinkList b; printf("b表:\n"); creatList(b,numberB); //printList(b); if(!listIsAsc(a) || !listIsAsc(b)) ///判断表a和表b是否都为升序 { printf("对不起,你输入的表不全是升序,请重新输入\n"); printf("-----------------------------------------\n"); printf("请输入a,b表长:"); continue; } mergeTwoList(a,b); printf("合并后结果为:\n"); printList(a); printf("-----------------------------------------\n"); printf("请输入a,b表长:"); } return 0; }