老师,为什么这个把tail给head后,head还是空啊

老师,为什么这个把tail给head后,head还是空啊

http://img1.sycdn.imooc.com//climg/601519b609a0865608110395.jpg

​public class LinkedListQueue<E> implements Queue<E> {
@Override
public int getSize() {
return size;
}

@Override
public void enQueue(E e) {
if (tail == null) {
tail = new Node(e);
head = tail;
} else {
tail.next = new Node(e);
tail = tail.next;
}
size++;
}

@Override
public E deQueue() {
if (size == 0) {
throw new IllegalArgumentException("deQueue failed.The queue is empty");
}
Node retNode = head;
head = head.next;
retNode.next = null;
if (head == null) {
tail = null;
}
size--;
return retNode.e;
}

@Override
public E getHead() {
if (size == 0) {
throw new IllegalArgumentException("getHead failed.The queue is null");
}
return head.e;
}

@Override
public E getTail() {
return tail.e;
}

@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("队首");
Node cur = head;
while (head != null) {
builder.append("<-" + head.e);
head = head.next;
}
builder.append("<-队尾");
return builder.toString();
}


@Override
public boolean isEmpty() {
return size == 0;
}

private class Node {
public E e;
public Node next;

public Node() {

}

public Node(E e, Node next) {
this.e = e;
this.next = next;
}

public Node(E e) {
this(e, null);
}

@Override
public String toString() {
return this.e.toString();
}
}

private int size;
private Node head;
private Node tail;

public LinkedListQueue() {

}

}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

如果真的执行到了你蓝框的语句,head 不应该为空了。


如果你测试 head 为空,要么根本没有执行这句;要么后续的逻辑又把 head 给修改了。


实际使用你的测试用例一步一步调试跟踪一下,看到底在哪里,你的 head 变成空了?


继续加油!:)

  • wukai001 提问者 #1

    http://img1.sycdn.imooc.com//climg/60151fab0980b67212320712.jpg

    2021-01-30 16:58:31
  • liuyubobobo 回复 提问者 wukai001 #2

    1)在你的环境执行课程代码,是否有问题?2)在 head = tail 后打印一下 head 的信息,结果是怎样的?

    2021-01-30 17:05:11
  • liuyubobobo 回复 提问者 wukai001 #3

    另,你这个截图不能说明运行了 head = tail,可能只运行了 else 部分。请确定 head= tail 这句话被运行了。

    2021-01-30 17:06:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2589    人
  • 解答问题       1090    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师