LeetCode Merge Two Sorted Lists

Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

入门题目了,严蔚敏的书本好像一开始就介绍了这样的题目,以前死背了好多次,始终背不出来,现在已经不用背了,感觉随时都能写出不比书本差的程序。

本题就是考链表的操作了。

链表的操作是要练出感觉来的。

下面的程序提供到位操作,把链表2直接插入链表1中。

 

/**

 * Definition for singly-linked list.

 * struct ListNode {

 *     int val;

 *     ListNode *next;

 *     ListNode(int x) : val(x), next(NULL) {}

 * };

 */

class Solution {

public:

	ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {

	    if (!l2) return l1;

	    if (!l1) return l2;

		

		ListNode *h = l1;



		if (l1->val > l2->val)

		{

			ListNode *t = l2->next;

			l2->next = l1;

			h = l1 = l2;

			l2 = t;

		}



		while (l1->next && l2)

		{

			if (l1->next->val > l2->val)

			{

				ListNode *t = l2->next;

				l2->next = l1->next;

				l1->next = l2;

				l2 = t;

			}

			l1 = l1->next;

		}



		if (l2) l1->next = l2;



		return h;

	}

};

 

 






 

你可能感兴趣的:(LeetCode)