gpt4 book ai didi

c - 如何在C中检查它是否是链表的子集

转载 作者:行者123 更新时间:2023-11-30 19:38:33 24 4
gpt4 key购买 nike

大家好!这是我第一次在 Stack Overflow 上发帖,我在这里过得很愉快。

因此,如果链表 A 是链表 B 的子集,则该函数将返回 TRUE。

但似乎只有在检查完第一个节点后才会更改 bool 值。我如何让它检查所有这些?这些列表按正确顺序排列。

    boolean compareList(LIST A, LIST B)
{
LIST p, q;
boolean checker=FALSE;
for(p=A;p!=NULL;p=p->next){
for(q=B;q!=NULL;q=q->next){
if(q->data==p->data){
checker=TRUE;
break;
}
}
}

return checker;
}

这是结构数据类型:

    typedef struct node{
int num;
struct node *next;
}*List;

谢谢您,祝您度过愉快的一天,Stack Overflow!

最佳答案

对于 A 的每个元素,您必须测试它是否存在于 B 中。如果 A 中只有一个元素不存在于 B 中,则返回 FALSE。您的代码只需要进行一些修改:

boolean compareList(LIST A, LIST B)
{
LIST p, q;

for(p=A;p!=NULL;p=p->next){
for(q=B;q!=NULL;q=q->next){
if(q->data==p->data)
break; // The element is found, no need to go further in B
}
if (q == NULL) // At least one element of A is not in B
return FALSE;
}

return TRUE;
}

注意:在您的代码中,您使用 ->data 作为 LIST 的成员。您的 struct typedef 名为 List 并且没有 data 成员:)

关于c - 如何在C中检查它是否是链表的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37958658/

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