我已经获得了列表L1,L2。 L1包含1,2,3,L2包含4,5,6。我如何将内容从L2复制到L1的末尾,所以最后L1包含1,2,3,4,5,6。有什么建议吗?
答案 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? (如果您需要具体的实施细节,您需要告诉我们您使用的是哪个链接列表,或者如果您编写了代码,请将代码发布给您。)