leetcode21

来源:互联网 发布:betterzip for mac安装 编辑:程序博客网 时间:2024/05/02 08:17

LeetCode21 ----------Merge Two Sorted Lists

将两个有序链表合并成一个有序链表。

这是当初学数据结构时一个非常重要的链表操作了。

思路很简单。

首先如果其中一个为空,返回另一个。

分别比较两个链表的元素,分为三种情况:

前两种分别是,将指针1向右移动或将指针2向右移动。

当两值相等时,要同时插入两个元素,并同时移动两个指针。

最后:

当某一指针指向空时,要将另一条链表的剩余部分插入到结果链表中。

这里也需要注意头指针,在LeetCode中返回的链表都是不带头结点的头指针

代码:

class Solution {public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {if (l2 == NULL)return l1;if (l1 == NULL)return l2;ListNode *head=new ListNode(0);ListNode *r = head;while (l1 && l2){if (l1->val == l2->val){ListNode*p1 = new ListNode(l1->val);ListNode*p2 = new ListNode(l2->val);r->next = p1;r = p1;r->next = p2;r = p2;l1 = l1->next;l2 = l2->next;}else if (l1->val < l2->val){ListNode*p1 = new ListNode(l1->val);r->next = p1;r = p1;l1 = l1->next;}else{ListNode*p2 = new ListNode(l2->val);r->next = p2;r = p2;l2 = l2->next;}}if (!l1){r->next = l2;}else{r->next = l1;}ListNode * p = head;head = head->next;delete p;return head;}};


0 0
原创粉丝点击