建立两个单链表LA和LB,把LA的元素放到LB后
时间: 2024-06-12 21:05:17 浏览: 114
面,即将LA的尾节点插入到LB的尾节点之后。
具体步骤如下:
1. 判断LA是否为空,如果是,则直接返回LB。
2. 判断LB是否为空,如果是,则将LB的头节点指向LA的头节点,然后返回LB。
3. 如果LA和LB都不为空,则找到LA的尾节点和LB的尾节点,将LA的尾节点的next指针指向LB的尾节点的next指针,然后将LB的尾节点的next指针指向LA的头节点。
4. 最后将LA的头节点的next指针置为空,表示LA已经被插入到LB之后了。
完整代码示例:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* mergeList(ListNode* LA, ListNode* LB) {
if (LA == NULL) {
return LB;
}
if (LB == NULL) {
LB = LA;
return LB;
}
ListNode* tailA = LA;
while (tailA->next != NULL) {
tailA = tailA->next;
}
ListNode* tailB = LB;
while (tailB->next != NULL) {
tailB = tailB->next;
}
tailA->next = tailB->next;
tailB->next = LA;
LA = NULL;
return LB;
}
int main() {
ListNode* LA = new ListNode(1);
LA->next = new ListNode(2);
LA->next->next = new ListNode(3);
ListNode* LB = new ListNode(4);
LB->next = new ListNode(5);
LB->next->next = new ListNode(6);
ListNode* head = mergeList(LA, LB);
while (head != NULL) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
return 0;
}
```
阅读全文