日期:2014-05-20  浏览次数:20679 次

简单的问题!新手,大哥帮忙看看
package work;

public class FirstLastLisk  
{
public Lisk first;
public Lisk last;
public FirstLastLisk()
{
first = null;
last = null;
}

public void insertFirst(String data)
{
Lisk newLisk = new Lisk(0,data);
if(isEmqty())
{
first = newLisk;
last = newLisk;
}
else
{
newLisk.next = first;
first = newLisk;
}
}

public void insertLast(String data)
{
Lisk newLisk = new Lisk(0,data);
if(isEmqty())
{
first = newLisk;
}
else
{
last.next = newLisk; // 不理解
}

last = newLisk;//不理解
}

public boolean isEmqty()
{
return (first == null);
}

public void display()
{
Lisk current = first;
while(current != null)
{
current.dippalyCurrent();
current = current.next;
}
}

}

那位大哥能帮我 解释一下 我不理解的 那两句代码 小弟万分感谢!
我没有对 链表的头操作 但是在 display的时候 为什么我的first.next 会有值呢?
我连续 插入了几个数值! 但是都是从末尾插入的 没有对头进行操作


------解决方案--------------------
后插时如果链表是空的,就first和last都指向插入的数据。如果链表不是空的,first不变,把新节点插入到原来last之后(last.next = newLisk),然后让last指向现在的最后(last = newLisk)

你的链表只要有两个以上节点当然first.next会有值,就是第二个节点啊。已经有了一个节点,后插一个,当然是放到first.next

还有,Lisk是什么类型?你自己写的节点类?

PS:错版了,去数据结构版吧