Day89 | 灵神 | 前后指针 合并两个链表
1669.合并两个链表
1669. 合并两个链表 - 力扣(LeetCode)
思路:
思路较为简单,就是一个模拟题
找到下标a的前一个结点并用p记录下来,继续遍历b-a+1的长度找到下标为b的节点,记录b的下一个节点为q
把list2接到p后,遍历list2,把末尾节点next指向q即可
完整代码:
class Solution {
public:ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) {ListNode *t=new ListNode;t->next=list1;ListNode *p=t;int length=b-a+1;//找到下标为a的结点的前一节点while(a--)p=p->next;ListNode *q=p->next;//找到下标为b的后一结点while(length--)q=q->next;p->next=list2;//继续遍历list2while(list2){//遍历到末尾加上qif(list2->next==nullptr){list2->next=q;break;}elselist2=list2->next;}return t->next;}
};