gpt4 book ai didi

C 合并两个链表

转载 作者:行者123 更新时间:2023-11-30 15:56:49 26 4
gpt4 key购买 nike

我正在尝试将两个链接列表的内容复制到一个链接列表中,以便一次复制一个元素(来自每个链接列表)。

所以,如果我有:list1 = [1,2,3] ,和list2 = [4,5,6]result = [1,4,2,5,3,6] 。如果一个列表比另一个列表短,则剩余节点将附加到结果列表的末尾。

这是我的代码,它有一个小错误:它在末尾创建一个额外的节点(我不想要)。

node *list_copy(node *list1, node *list2) 
{
node *mylist = newnode();
node *head = mylist;

while (list1 != NULL || list2 != NULL) {

if (list1 != NULL) {
mylist->data = list1->data;
mylist->next = newnode();
mylist = mylist->next;

list1 = list1->next;
}
if (list2 != NULL) {
mylist->data = list2->data;
mylist->next = newnode();
mylist = mylist->next;

list2 = list2->next;
}

}
return head;
}

如何修改它以使其不创建最后一个节点?

输入示例:

List1 = [1,2,3], List2 = [1,2,3,4,5,6], Result = [1,1,2,2,3,3,4,5,6,0]; 

最佳答案

不要在一个 while block 中进行合并,这会使您的代码更难阅读。从功能上将列表副本分解为另一个函数并调用它两次。

您在循环之前执行 newnode,然后在添加当前项后执行 newnode。怎么样...

node *mylist; 
node *head;

while (listItem != null) {

if(head == null) {
mylist = newnode();
head = myList;
}
else {
mylist->next = newnode();
mylist = mylist->next;
}


mylist->data = listItem->data;
listItem = listItem->next;
}

关于C 合并两个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com