gpt4 book ai didi

c - 打印两个链表的公共(public)元素时出错

转载 作者:行者123 更新时间:2023-11-30 17:18:06 24 4
gpt4 key购买 nike

我试图打印两个链接列表中的公共(public)元素,但我的函数仅打印第一个元素(如果它是公共(public)的)

  void common()
{

//head和head1分别是第一个和第二个列表的头指针

      node1 *ptr=head;
node2 *ptr2=head1;
while(ptr!=NULL||ptr2!=NULL)
{
while(ptr!=NULL&&ptr2!=NULL)
{
if(ptr->info==ptr2->info)
{
printf("Common Elements are-%d\n",ptr2->info);
ptr2=ptr2->next;
}
}
ptr=ptr->next;
ptr2=head1;


}
}

最佳答案

您需要将 ptr2 节点的增量移出 if 条件。

ptr2->info 的值是否与 ptr->info 的值匹配不是移动到的决定条件ptr2 中的下一个节点。所以,你必须无条件地移动到下一个节点。

类似的东西

while(ptr!=NULL&&ptr2!=NULL)
{
if(ptr->info==ptr2->info)
{
printf("Common Elements are-%d\n",ptr2->info);
}
ptr2=ptr2->next; //move to next node unconditionally.
}

应该可以完成这项工作。

此外,按照@Gopi的建议,您可以删除代码中的冗余检查。 outer while 可以检查 ptr 的非 NULL 值,而inner while > 可以检查非 NULL ptr2

关于c - 打印两个链表的公共(public)元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29277003/

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