使用链表确定是否合适的子集

determining if proper subsets using linked lists

本文关键字:子集 是否 链表      更新时间:2023-10-16

我正在尝试确定两个链表是否是一个合适的子集…

不确定我是如何将其设为false的,当它应该为true时,因为p包含Q的所有元素。

每次浏览时都需要将q重置为q的开头。

为此,您需要在For循环之前保存原始节点,并每次重置:

Node *q_start = q;
for(p=p; p!=NULL; p=p->next) {
    q = q_start;

这应该是最简单的修复方法,但不是最好的。

如果使用p={1,2,3}和Q={1,2,3,4},则提供的代码应返回true。然而,这只是因为你P是Q的子集,它的值与它们在Q中的顺序相同。如果您在P中迭代以检查每个值是否在Q中,则需要检查Q的所有,而不仅仅是尚未检查的剩余部分。此外,代码

if (p!=NULL && q==NULL)
    return false;

在函数顶部附近是不必要的,因为您还在for循环中检查q==NULL:

if(q==NULL)
      return false;