2012-09-01 110 views
0

我創建了這個非常簡單的堆棧概念的實現。 你能告訴我它是否正確和乾淨?你是否看到任何不良的編碼習慣?Java和堆棧:正確的實現?

public class MyStack 
{ 
    private static final int MAXELEMENTS = 10; 
    private int[] elements; 
    private int numElements; 

    public MyStack() 
    { 
     numElements = 0; 
     elements = new int[MAXELEMENTS]; 
    } 

    public boolean isEmpty() 
    { 
     return (numElements == 0); 
    } 

    public boolean isFull() 
    { 
     return (numElements == MAXELEMENTS); 
    } 

    public void push(int e) 
    { 
     if (!isFull()) 
      elements[numElements++] = e; 
    } 

    public int top() 
    { 
     if (!isEmpty()) 
      return elements[numElements - 1]; 
     else 
      return -1; 
    } 

    public void pop() 
    { 
     if (!isEmpty()) 
      numElements--; 
    } 
} 

您可以用下面的代碼使用它:

class MyStackTestDrive 
{ 
    public static void main(String[] args) 
    { 
     MyStack s1 = new MyStack(); 
     MyStack s2 = new MyStack(); 
     s1.push(2); 
     s2.push(4); 
     System.out.println(s1.top()); 
     System.out.println(s2.top()); 
    } 
} 
+5

您將得到更好的答案,詢問這http://codereview.stackexchange.com/ – 2012-09-01 15:28:58

+1

我想說一下java.lang.Stack一個很好的實現 – Chris

+0

@克里斯我在哪裏可以找到它? –

回答

2

有一些事情我會做,他們有的只是一個優先事項:

  • 重命名「包含numElements」到「頭」,以更好地反映其功能。
  • 添加一個構造函數,其中可以指定堆棧的最大尺寸。
  • pop方法應返回堆棧的頂層元素並將其刪除。這是標準的語義。
  • top和pop應該在空堆棧上調用時拋出異常。這是爲了防止在沒有首先檢查空堆棧的情況下發生錯誤。
2

我的意見是:

  1. 這將是唯一int堆棧。你應該使它通用
  2. 這是一個只有10個元素的堆棧。沒多大用處
  3. numElements與堆棧變量
  4. top應該throw和異常空棧之上的壞名聲(傳統)
  5. pop應該返回堆棧的頂部。現在它是void
+0

感謝您的建議;) –

1

你應該儘量讓你的籌碼通用的(如果你想允許任何其他類型的被添加到)也,你應該儘量做到自動增長,通過內單向的push方法,如果它已滿,則爲它重新分配空間(創建另一個數組,可能是之前兩次的空間,並逐一地實現)。例如,任何你使用數組而不是鏈接列表的方式,恕我直言是一個上帝的想法。