关于Queue的问题

ADAM129XU 2009-09-28 11:51:18
public class LinkedQueue {
private class Node {
String value;
Node next;
Node(String val,Node n) {
value=val;
next=n;
}
}
private Node front=null;
private Node rear=null;

public void enqueue(String s) {
if(rear!=null) {
rear.next=new Node(s,null);
rear=rear.next;
}else {
rear=new Node(s,null);
front = rear;
}
}
}

enqueue中的if和else没看懂。
else里,rear是空的情况,为什么front等于rear?
...全文
134 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ADAM129XU 2009-09-28
  • 打赏
  • 举报
回复
可是front指向的不是元素吗?但是rear指向的是元素的下一位啊。
John_2001_83 2009-09-28
  • 打赏
  • 举报
回复
你可以理解为排队买车票。出队操作,front会移动,入队操作,rear会移动。程序中的if和else是为了处理队列开始加入第一个元素的情况。
front -> NULL, rear -> NULL
这是开始,加入第一个元素后
+---+
| s | <- rear就成这样了,但是front也要指向这里
+---+


+---+
| ^ | <- rear <- front这是正确的结果
+---+

希望我解释清楚了哈
matrix319 2009-09-28
  • 打赏
  • 举报
回复
front移动
不理解
ADAM129XU 2009-09-28
  • 打赏
  • 举报
回复
最通常的情况下,不就是rear是空的吗?加一个元素进来后,front移动之后也不指向rear啊。
matrix319 2009-09-28
  • 打赏
  • 举报
回复
front = rear; 是front指向rear
ADAM129XU 2009-09-28
  • 打赏
  • 举报
回复
为什么指向rear?
zhelong1983 2009-09-28
  • 打赏
  • 举报
回复
是将front指向rear
py330316117 2009-09-28
  • 打赏
  • 举报
回复
front和rear是指针 front指向queue的头 rear指向尾 如果rear=null 则表明这个空队列所以头和尾指向同一个null队列 即front=rear
truediego 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wang12 的回复:]
程序中else判断目的是在队列为空的情况下,让队列的头和尾都指向同一个节点
[/Quote]

8楼正解!

else是创建队列第一个节点,并用front记下来。
ChDw 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 adam129xu 的回复:]
可是front指向的不是元素吗?但是rear指向的是元素的下一位啊。
[/Quote]

front指向是第一个元素,rear指向最后一个元素
ChDw 2009-09-28
  • 打赏
  • 举报
回复
rear只在Queue还为空的时候才会等于null

if(rear != null) 其实就是已经存在一个元素了

if里面的内容就是生成一个新的Node对象,使得原来的rear.next指向这个新的Node,并且使得rear指向这个新Node

else的情况是Queue为空情况,初始化front和rear都指向这个新的Node对象
wang12 2009-09-28
  • 打赏
  • 举报
回复
程序中else判断目的是在队列为空的情况下,让队列的头和尾都指向同一个节点

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧