解题思路:
(1)为防止出现需要移除头节点的情况,新建立一个头节点
(2)再进行简单的链表删除操作
/**
* 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* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) {
ListNode *head = new ListNode(999999999);
head->next = list1;
ListNode *temp = head,*anode=NULL,*bnode=NULL;
int i = 0;
while(temp) {
if(i==a) anode = temp;
if(i==b+1) bnode = temp->next;
temp = temp->next;
i++;
}
anode->next = list2;
while(list2) {
if(list2->next==NULL) {
list2->next = bnode;
break;
}
else list2 = list2->next;
}
return head->next;
}
};