当前位置: 首页 > 知识库问答 >
问题:

为什么双循环链表中的这种交集方法不起作用?

郭弘方
2023-03-14
public static DCLL inter(DCLL a, DCLL b) {
        Element curA = a.head;
        DCLL c = new DCLL();
        
        if(a.head == null || b.head == null)
            return c;
        
        while(curA != a.rear) {
            if(b.isInList(curA.data)) {
                c.insert(curA.data);
                curA = curA.next;
                c.length++;
            }
        }
        return c;
    }

这是一个交集方法,在该方法中,我应该返回一个包含列表aB中所有相同元素的列表,但该程序正在无限循环,并且该方法中唯一的while循环可以无限循环,所以我不明白它为什么不工作。

isinlist()insert()方法工作非常好。

我更新了代码,我认为它会起作用,但现在在toString方法的s=“”+cur.data+“”;行中出现了另一个错误。这是一个空指针异常,但为什么它是一个错误?

        String s = " ";
        if(this.isEmpty())
            return"Empty list";
        
        Element cur = this.head;
        s = " | " + cur.data + " | ";
        cur = cur.next;
        while(cur != this.head) {
            s+= cur.data + " | ";
            cur = cur.next;
        }
        return s;
    }  

共有1个答案

皇甫敏达
2023-03-14

如果b.isinlist(cura.data)为false,则不更新您的currA。因此,您一次又一次地检查“cura!=a.rear”,这不会改变。

 类似资料:
  • 问题内容: 我有以下代码: 我希望它能打印a = 2 b = 1,但它却打印相反的东西。因此很明显,swap方法不会交换a和b值。为什么? 问题答案: 这与整数的不变性无关。它与 Java是值传递 ,该死 的事实有关! (不烦恼,只是文章标题:p) 总结一下:您实际上不能在Java中创建交换方法。您只需要在需要的地方自己进行交换即可。反正这只是三行代码,所以应该不成问题:)

  • 我是java的初学者。我试图编写一个程序,在给定位置插入一个节点,并显示整个链表。但是,我的节点似乎没有被插入,当我显示链接列表时,只显示第一个节点值。有人能解释一下我哪里出了问题吗? //这里,位置是索引位置。索引从0开始,以大小1结束,就像一个数组。 //插入代码 //遍历代码 //主要方法 输出:

  • 我创建了一个双循环链表。 我需要知道每个节点到头部的距离。 因为当我必须删除或获取具有特定密钥的节点时,如果两个节点具有相同的密钥和相同的距离,则必须删除或获取这两个节点,否则必须删除最靠近头部的节点。 我不知道如何计算距离,因为它是圆形的。。。 这个链表的插入就是这样工作的。 所有的节点都去追头。 例: 1)头部 2) 头部A(插入A) 3) 头部B-A(插入B) 4) 头部C-B-A(插入C)

  • 输入是:1。硬币中一定数量货币的总重量,2。旧货币硬币的价值和相应重量。 目标是找到给定金额货币的最低可能货币价值。 我的方法是按货币的价值/重量比升序对硬币进行排序,然后贪婪地将第一枚硬币的重量尽可能多地匹配到总和中(跟踪它匹配的次数),然后匹配将第二枚硬币的重量尽可能多次地放入余数中,等等,对于所有硬币或直到余数为零(如果不是,情况是不可能的)。 法官说我的答案是错误的。你能给我一个关于算法错

  • 问题内容: 这段代码有什么问题: 问题答案: 三元运算符不能有不返回值或方法的语句。您需要具有返回值的语句。 您需要重写它。

  • 问题内容: 在这段代码中,为什么不按我的意愿初始化我的数组?是不是for-each循环并非旨在做到这一点,或者我只是没有正确使用它? 问题答案: for-each循环不适用于这种情况。您不能使用for-each循环来初始化数组。您的代码: 将转换为以下内容: 如果这是一个对象数组,它仍然会失败。基本上,for-each依次将集合或数组中的每个条目分配给您提供的变量,然后可以使用该变量。该变量 不