队列是使用单链表实现的。
变量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;
}
我创建了一个字符来存储我要删除的项目的值。。。我的问题是从列表中删除最后一个节点。我不知道如何在不出现空指针异常的情况下进行操作。如有任何意见,我们将不胜感激!
if
条件在您位于最后一个节点时触发,在这种情况下,您希望保存该节点的值并将其从列表中删除。您正在保存值,但为什么要将.net设置为null?您不想将上一个tmp节点的next设置为null吗?将back.next设置为null难道不会切断整个列表吗?
很抱歉第一句话,那个家伙显然并没有读到你们的问题。StackOverflow,朋友?