本周由于公司周年庆,组织活动出去玩,所以写的有点晚了。言归正转,题目难度"Easy"
题目:将两个从小到大排列的有序链表(可以为空)合并成一个从小到大排列的有序链表。
思路:既然人家都给你把链表排列好了,那你只要比个大小就行了,很简单,直接看代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
//排除空链表
if (l1 == NULL || l2 == NULL) {
if (l1 == NULL) return l2;
else return l1;
}
//创建一个链表的头部
struct ListNode* head,*temp;
if (l1->val > l2->val) {
head = l2;
l2 = l2->next;
}else {
head = l1;
l1 = l1->next;
}
temp = head;
//遍历链表
while (l1 != NULL || l2 != NULL) {
//解决空链表的问题
if(l1 == NULL || l2 == NULL) {
if(l1 == NULL) {
temp->next = l2;
l2 = l2->next;
}else {
temp->next = l1;
l1 = l1->next;
}
//比较链表数值大小
}else if (l1->val > l2->val) {
temp->next = l2;
l2 = l2->next;
}else {
temp->next = l1;
l1 = l1->next;
}
temp = temp->next;
}
return head;
}
下周见〜〜
网友评论