2014-02-05 93 views
-1

如果你看下面我的toString()方法,你可以看到我還沒有完成它。我不知道如何?任何人都可以解釋我可以如何繼續?困惑: - |我是鏈接列表的新手,所以我自動去了Arrays.toString()方法,然後才意識到當然沒有任何數組。如何打印鏈接列表?

import java.util.Arrays; 


public class LinkedIntegerStack { 

private Node top = null; 
private int size = 0; 

public int size(){ 
    return size; 
} 

public boolean isEmpty() { 
    if(top == null){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

public void push(int value) { 
    Node n = new Node(value); 
    n.next = top; 
    top = n; 
    size++; 
} 

public int top(){ //just returns a value..doesn't change structure 

    return top.element; 
} 

public int pop(){ 
    if (isEmpty()){ 
     throw new StackEmptyException(); 
    } 
    int toReturn = top.element; 
    top = top.next; 
    size--; 

    return toReturn; 
}  

public String toString() { 
    return "[ Top = " + size +"]" + "[Stack = "); 
} 

private class Node { 
    int element; 
    Node next; 

    public Node(int value){ 
     element = value; 
    } 
} 

public static void main(String[] args) throws StackEmptyException{ 

    LinkedIntegerStack stack = new LinkedIntegerStack(); 

    stack.push(17); 
    System.out.println(stack); 

    stack.push(11); 
    System.out.println(stack); 

    try{ 
      stack.pop(); 
      System.out.println(stack); 
     } 
    catch(StackEmptyException ex){ 
      System.out.print("Stack is Empty: Error"); 
     } 
    System.out.println("Stack: " + stack); 
} 

}

回答

1

該解決方案非常簡單。

它應該足以遍歷堆棧。

public String toString() { 
    String result = "[ Top = " + size +"]" + "[Stack = ["; 

    if (top == null) { 
     return result + "]]"; 

    Node temp = top; 
    while (temp != null) { 
     result += temp + ', ' 
     temp = temp.next; 
    } 

    return result += temp.element + "]]"; 
} 

當然,你至少應該爲Node類添加getter方法,即getElement()和getNext();

PS:代碼沒有測試,但應該沒問題。