2014-04-27 54 views
0

今天我正在學Stack。 我想實現推(元素)方法,但由於某些原因,它不工作。Stack中的push(Element)方法實現

我已經添加了10個項目到我的堆棧,然後使用toString方法打印。唯一的項目打印是我最重要的元素。 您的幫助將不勝感激!

private Node head = null; 
private Node tail = null; 
private static int size; 

public void push(Customer custPair) 
{ 
    if (head == null) 
    { 
     head = new Node(custPair, null); 
     tail = head; 
     size++; 
    } else 
    { 
     tail.next = head; 
     head = new Node(custPair, null); 
     size++; 
    } 

} 

@Override 
public String toString() 
{ 
    StringBuilder sBuilder = new StringBuilder(); 

    // Walk down the list and append all values 
    Node curNode = head; 
    while (curNode != null) 
    { 
     sBuilder.append(curNode.value.toString()).append("\n"); 
     curNode = curNode.next; 
    } 
    return sBuilder.toString(); 
} 

回答

0

當堆棧已經有頭時,你的邏輯是錯誤的。我認爲新的頭部必須指向老頭(通過.next)。

我有點困惑,你是否實現了LIFO或FIFO堆棧?

對於LIFO

else { 
    Node node = new Node(custPair, null); 
    node.next = head; 
    head = node; 
    size++; 
} 

對於後進先出堆棧,你真的不需要一個尾巴。

+0

你能幫我糾正它嗎? :) – user3337714

+0

後進先出(LIFO) – user3337714

+0

好的,添加了代碼。 –