/**
* 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) {
ListNode dummy(INT_MIN);
ListNode *tail = &dummy;
while (l1 && l2) {// while l1!= NULL && l2 != NULL)
if (l1->val < l2->val) {
tail->next = l1;
l1 = l1->next;
} else {
tail->next = l2;
l2 = l2->next;
}
tail = tail->next;
}
tail->next = l1 ? l1 : l2;
return dummy.next;
}
};
E.G说l1 = 1,l2 = 1,2 mergeTwoLists(l1,l2)返回1,1,2
我只是对创建一个新的链表节点有几个问题。 有人告诉我,在声明和初始化列表节点时必须使用新关键字。因此对于函数中的前两行,您不需要使用:
ListNode *tail = new ListNode()
或
ListNode *tail = new ListNode(int)?
我不太确定语法,但是ListNode虚拟(INT_MIN)正在堆栈上创建节点,例如tail?我只是感到困惑,想将其整理得尽可能清楚。感谢您的答复。