#include<stdio.h>
typedef struct node {
int val;
struct node* next;
}Node;
Node* mergeTwoLists(Node* list1, Node* list2);
Node* create_list(void);
//测试部分 !!
int main(void) {
Node node1 = { 8, NULL }; //最后一个节点才有null
Node node2 = { 6, &node1 };
Node node3 = { 4, &node2 };
Node nodea = { 3, NULL }; //最后一个节点才有null
Node nodeb = { 2, &node1 };
Node nodec = { 1, &node2 };
mergeTwoLists(&node3, &nodec);
return 0;
}
Node* mergeTwoLists(Node* list1, Node* list2) { //!!!
Node node = { 0, NULL }; // dummy node
Node* head = &node;
Node* curr = head;
// 如果list1和list2还有结点
while (list1 && list2) {
// 如果list1->val < list2->val, 将list1添加到curr结点的后面
if (list1->val < list2->val) {
curr->next = list1;
curr = curr->next;
list1 = list1->next;
}
else { // 否则将list2添加到curr结点的后面
curr->next = list2;
curr = curr->next;
list2 = list2->next;
}
}
// 循环结束后, 至少有一条链表为空. 将另一条链表添加到curr后面即可
if (list1) curr->next = list1;
if (list2) curr->next = list2;
// head->next即为合并后链表的第一个节点
return head->next;
}
07-14
1889
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交