首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java编写遍历链表的dequeue()函数

用Java编写遍历链表的dequeue()函数
EN

Stack Overflow用户
提问于 2020-02-28 04:40:44
回答 1查看 191关注 0票数 0

使用单链表实现队列。

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

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

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

我已经编写了enqueue()函数,但是我不确定dequeue()做错了什么。我必须到达最前面,也就是最后一个节点,才能将其出队。因此,我必须遍历Node来移除并返回队列前面的项。

代码语言:javascript
运行
复制
 //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;
    }

出队函数:需要工作

代码语言:javascript
运行
复制
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; 
}

我创建了一个char来存储我要去的项的值,remove...My问题是从列表中删除最后一个节点。我不确定如何在不得到空指针异常的情况下这样做。任何意见都将非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-02-28 04:55:56

当您在最后一个节点时,会触发if条件,在这种情况下,您希望保存该节点的值并将其从列表中删除。您正在保存该值,但是为什么要将back.net设置为null呢?您不想将前一个tmp节点的next设置为null吗?将back.next设置为null不会影响整个列表吗?

对于第一个评论我很抱歉,这家伙显然没有读到你的问题。StackOverflow,是吧?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60441432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档