[牛码]这代码不太理解,请各位搞手指点下! 本帖最后由 cyshen 于 2010-05-25 15:55:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private Node<T> top=new Node<T>();这个时候 top的结构为{null , null}第一次push , 是按照new Node(U item,Node<U> next) 的方式进行 push,所以此时top的结构为{ "Phasers" , {null ,null}}同理 ,循环第二次top的结构为{"on",{ "Phasers" , {null ,null}}}循环第三次top的结构为 { "stun!", {"on",{ "Phasers" , {null ,null} } } } 我能理解,但是不知道能不能说明白,如果说不明白,你可以去百度看看头插法构建stack不知道楼主学过数据结构没有. 数据结构构造链表的方式有头插法跟尾插法,头插法在于有一个头指针始终指向链表的第一个节点. 当执行这一句的时候: LinkedStack<String> lss=new LinkedStack<String>();在类内部private Node<T> top=new Node<T>(); 先构造了一个头节点. 这个头节点没有数据,它只作为一个指针,指向以后加进来的数据.for(String s:"Phasers on stun!".split(" "))//使用字符串分割的方法,分割成3个字符串 lss.push(s);//调用stack的push方法 public void push(T item){ top=new Node<T>(item,top);//new一个新的节点对象,注意调用的构造方法} Node(U item,Node<U> next){ this.item=item;//让节点的data域等于外面传来的字符串 this.next=next;//关键在这里,让新的节点的next指针指向了传进来的top对象,配合push里面的 top=new Node<T>(item,top),旧的top指向新的节点.这样就使用了头插法构成了链表 }至于你说在pop时,它是调用top.item取得数据.正是因为是使用头插法构造的链表,头节点只是一个空节点,里面的top始终指向最后一个插入的节点,所以用top.item取得数据 还有一点就是 指针其实一直指的是 top和 new node() 无关。top的结构为 { "stun!", {"on",{ "Phasers" , {null ,null} } } }所以 pop的时候会反着把 Phasers on stun! 中的三个词打印出来。 java swing 画矩形。 JDBC连接数据库的问题 请教!!!统计问题 怎样实现面板切换(急) 程序编译出错,请问。。。在线等。 java中abstract class 与 class有何区别? 今天毕设检查,让我很郁闷!! 问一个最菜的问题!! 請問各位大蝦silverstream為何物? scjp的分数怎么算的 ?61%是什么意思?不是有60道题么?怎么叫答对61%? 现在的网页游戏都是用哪些东西做出来的? 我想买一本关于java的书,推荐一本吧
这个时候
top的结构为
{null , null}第一次push , 是按照new Node(U item,Node<U> next) 的方式进行 push,所以
此时top的结构为
{ "Phasers" , {null ,null}}同理 ,循环第二次
top的结构为
{
"on",
{ "Phasers" , {null ,null}}
}
循环第三次
top的结构为
{ "stun!", {"on",{ "Phasers" , {null ,null} } } }
当执行这一句的时候: LinkedStack<String> lss=new LinkedStack<String>();
在类内部private Node<T> top=new Node<T>(); 先构造了一个头节点. 这个头节点没有数据,它只作为一个指针,指向以后加进来的数据.
for(String s:"Phasers on stun!".split(" "))//使用字符串分割的方法,分割成3个字符串
lss.push(s);//调用stack的push方法
public void push(T item)
{
top=new Node<T>(item,top);//new一个新的节点对象,注意调用的构造方法
} Node(U item,Node<U> next)
{
this.item=item;//让节点的data域等于外面传来的字符串
this.next=next;//关键在这里,让新的节点的next指针指向了传进来的top对象,配合push里面的 top=new Node<T>(item,top),旧的top指向新的节点.这样就使用了头插法构成了链表
}至于你说在pop时,它是调用top.item取得数据.正是因为是使用头插法构造的链表,头节点只是一个空节点,里面的top始终指向最后一个插入的节点,所以用top.item取得数据
{ "stun!", {"on",{ "Phasers" , {null ,null} } } }所以 pop的时候
会反着把 Phasers on stun! 中的三个词打印出来。