int main()
{
	ListNode p1={2,NULL};
	ListNode p2={1,NULL};

	ListNode * l1 = &p1;
	ListNode *l2 = &p2;

	mergeTwoList(l1,l2);
	return 0;

}
Beispiel #2
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;
}