0
彈出項目我實現了一個SLL與這個樣子無法從堆棧
public class StudentNode<T>
{
private StudentNode<T> next;
private T std;
public StudentNode(T s)
{
this.std=s;
this.next=null;
}
public StudentNode()
{
this.std=null;
this.next=null;
}
public T getStudent()
{
return this.std;
}
public void setNext(StudentNode<T> ln)
{
this.next = ln;
}
public StudentNode<T> getNext()
{
return this.next;
}
}
節點我必須使用SLL模擬棧(LIFO結構)
public class LinkedStack<T> {
private int size;
private StudentNode<T> head;
/* methods */
public boolean pop()
{
if (getSize()>1) {
StudentNode<T> ss=this.head;
for(StudentNode<T> sb=ss;sb!=null;sb=sb.getNext())
System.out.println(((Student)sb.getStudent()).avg());//prints the grade
while(ss.getNext().getNext()!=null){
ss=ss.getNext();
}
ss.setNext(null);
this.size-=1;
for(StudentNode<T> sb=this.head;sb!=null;sb=sb.getNext())
System.out.println(((Student)sb.getStudent()).avg()+"*");
return true;
}
else
if(getSize()==1){
this.head=null;
return true;
}
return false;
}
}
我要彈出列表的最後一個元素,但它似乎使我成爲它的一個副本,而不是切斷它。我在這裏錯過了什麼?
第一次執行:
5.0
10.0
2.0
5.0
4.0
5.0*
10.0*
2.0*
5.0*
第二次執行:
5.0
10.0
2.0
5.0
5.0
4.0
5.0*
10.0*
2.0*
5.0*
5.0*
由於pop()方法返回布爾值,它如何讓你成爲最後一個元素的副本? – wxyz
不清楚你在問什麼。也不清楚爲什麼你要看2個節點;似乎這將拋出一個NPE時,大小== 2. –
@BrianRoach,我認爲當大小爲2,時不會執行,並將鏈接到第二個元素將被刪除 - >看起來不錯。 – wxyz