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

通过遍历Java中的链表来编写de队列()函数

田鸿彩
2023-03-14

队列是使用单链表实现的。

变量back“指向”链接列表中的第一个节点。在后面添加新元素(排队)。

变量前端“指向”链表中的最后一个节点。元素从前面移除(退出队列)。

这个实现与通常的队列相反,在通常的队列中,后面是最后一个节点,前面是第一个节点。我知道这不是实现队列的好方法,但它是使用链表编码的好方法。

我已经编写了enqueue()函数,但是我不确定dequeue()有什么问题。我必须到前面,这是最后一个节点,让它出列。因此,我必须遍历节点以删除并返回队列前面的项目。

 //Node stuff
private Node front, back;
static class Node {
    public Node (char item, Node next) { this.item = item; this.next = next; }
    public char item;
    public Node next;
    }

出列功能:需要工作

public char dequeue() {

    char item;

    if (back.item == front.item) {
    item = front.item; 
    back = null;
    }
    for (Node tmp = back; tmp != null; tmp= tmp.next){
    if (tmp.next == null){ 
        item = tmp.item; 
        back.next = null; 
    }
    }
    return item; 
}

我创建了一个字符来存储我要删除的项的值。。。我的问题是从列表中删除最后一个节点。我不知道如何在不出现空指针异常的情况下执行此操作。任何意见都将不胜感激!

共有1个答案

糜征
2023-03-14

当您位于最后一个节点时,if条件将触发,在这种情况下,您希望保存该节点的值并将其从列表中删除。您正在保存值,但为什么要后退。net为空?您不想将上一个tmp节点的next设置为null吗?不会退缩的。空服务器旁边是整个列表吗?

很抱歉第一句话,盖伊显然没有读到你的问题。堆栈溢出,对吗?

 类似资料:
  • 每次我们在堆中为链表分配内存时,我们都会得到一个地址,这个地址链接到链表的下一个变量,head是指向链表初始节点的指针。 如果我们做,那么它会指向下一个链表,或者指向堆的随机内存,或者指向堆中初学者列表的下一个内存。

  • 问题内容: 您好,我正在尝试创建一个遍历链表的for循环。对于每条数据,它将单独列出。我正在尝试在此处学习链接列表,因此请不要提供数组建议。有人知道怎么做吗? 示例输出: 187号航班 501航班 我的代码如下: 问题答案: 只需使用增强的for循环,就像使用数组一样:

  • 本文向大家介绍python通过索引遍历列表的方法,包括了python通过索引遍历列表的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python通过索引遍历列表的方法。分享给大家供大家参考。具体如下: python中我们可以通过for循环来遍历列表: 如果希望遍历列表的同时得到元素的索引号,可以使用下面的代码: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 这样遍历Java中的列表是否较慢: 相对于: 问题答案: 我假设您出于好奇而问,不会引用Knuth(可能有人会)。 我相信,一旦您的代码被编译,就不会有任何改变。它 确实 有所作为 之前 (例如2是很多更易读和简洁的),所以要为2号和不关心的休息。 就是我的2美分 编辑 请注意,代码段1中的代码会在每次循环运行时进行计算,这可能使其比代码2还要慢 还需要编辑 我必须仔细检查一下,Jos

  • 我有一个数组列表,其中包含我想要执行方法“计数”的实例化对象的名称。不过,我不确定是否/如何做到这一点。我有一个循环要扫描数组列表,并添加了伪代码。 我是java新手,不确定这是否可行,但如果有任何帮助,我将不胜感激。谢谢

  • 嘿,伙计们,我在让for循环工作时遇到了一些麻烦。myList是一个链表,其中填充了文件中的数字,我正在尝试遍历它并以一种(当前,下一个)的方式打印当前值和每个下一个值- 出于某种原因,for循环无法执行任何操作,或者更确切地说,代码在for循环的开始就中断了。如果我摆脱for循环并只是复制和粘贴 很多时候它会按照我的意愿工作,但我宁愿不这样做。for 循环语法看起来是正确的,如果 say cou