合并两个有序链表(2)
后序来啦!!!
之前说按照自己的思路走一走这个程序,今天走了一下,还是发现了一个很大的问题,那就是链表的first没有办法固定,或者说我不知道怎么固定!!!!!!horrible!!!如果有大佬知道怎么固定的话,可以留言告诉我嘛!
题目和代码放到下面:
题目:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { //以l2为基础 问题:固定住first(但是没有办法固定住它。。。。) ListNode *newList = l2; ListNode *l; if(l1 == nullptr){ newList = l2; }else if(l2 == nullptr){ newList = l1; }else{ while(l1 != nullptr && newList != nullptr){ if(l1->val <= newList->val){ l = preinsertl2(newList,l1->val); newList = l->next; } l1 = l1->next; newList = newList->next; } } return l; } ListNode* preinsertl2(ListNode* l2,int val){ if(l2 == nullptr){ cout << "wrong!" << endl; return nullptr; } ListNode *p = new ListNode(val); if(p == nullptr){ cout << "分配错误!" << endl; return nullptr; } p->next = l2; l2 = p; return l2; } };
horrible!!!救命!!!