如何将一个链表内容复制到另一个链表

时间:2009-11-10 17:19:36

标签: c++ linked-list

我已经获得了列表L1,L2。 L1包含1,2,3,L2包含4,5,6。我如何将内容从L2复制到L1的末尾,所以最后L1包含1,2,3,4,5,6。有什么建议吗?

5 个答案:

答案 0 :(得分:3)

我不知道实际执行情况,我会说:

L1.tail = L2.head

这会将两个列表链接在一起,您现在可以丢弃对L2的引用。

答案 1 :(得分:1)

如果它是链表,那么列表中的每个节点都应该有一个指向列表中下一个项目的指针。列表中的最后一个节点应该指向null(或者指示您位于列表末尾的其他方式)。要将L2的内容复制到L1的末尾,只需将L1的最后一项的下一个节点指针设置为L2的第一项。

答案 2 :(得分:1)

由于这是一个家庭作业问题,我不能给你实际的代码。但这很容易解决。

基本上,您只想将L2的内容附加到L1的末尾。如您所知,每个链表都有一个头指针和一个尾指针。当您追加到列表时,这意味着将新节点附加到尾指针,然后向前移动尾指针。所以你只需要将L2的头指针附加到L1的尾指针,然后将L1的尾指针移动到列表的末尾。

另外,如果列表类有一个内部大小变量来计算元素数,请不要忘记更新列表的大小。

答案 3 :(得分:1)

你评论说这不是作业,即使它被标记为家庭作业。我会接受你的话。

使用C ++ STL列表,您只需要插入方法和一些迭代器。

list<int> L1;
list<int> L2;

// let's just assume that L1 and L2 are initialized in the manner you described

// after this, L1 will contain 1,2,3,4,5,6
L1.insert(L1.end(), L2.begin(), L2.end());

答案 4 :(得分:0)

此后L2会发生什么?你几乎肯定不想只是将L1.tail更改为指向L2.head,如果L2将在程序中稍后使用和更改。

为什么不从L2的头到尾循环并将值推入L1? (如果您需要具体的实施细节,您需要告诉我们您使用的是哪个链接列表,或者如果您编写了代码,请将代码发布给您。)