2011-12-03 36 views
-1

我已經創建了自己的堆棧類,但需要實現get方法以基於在args中傳遞的索引返回堆棧元素。我創建了一個包含方法,並假設get會以類似的方式工作。實現堆棧獲取方法

我的問題是我將如何實現get方法?我想基本實現Stack從標準庫中的Vector類繼承的get方法。請參閱-http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html#get%28int%29

以下是我在下面的包含方法。

public boolean contains (T value){ 

    T t = top.item; 
    Object node = t; 
    while(node!=null) 
    { 
     if(node==value){ 
      return true; 
     } 
     else { 
      node=top.next; 
     } 
    } 
    return false; 
} 
+2

什麼問題? –

+0

問題是什麼,是的它會以同樣的方式工作? – havexz

+0

該索引參數有什麼作用?指定堆棧的深度?從頂部算起?無論哪種方式,這是一個不尋常的堆棧。通常情況下,你可以推/ pop/peek。 – Thilo

回答

1

經典堆棧不支持該操作,並且確實不應該擴展Vector。

的操作,它支持有:

push(item) 
pop(); 
peek(); 

所以你想做的事,如果你想使用的數據結構來支持你的籌碼是用列表的一個實例,這將讓你什麼反映出原來的Sun團隊做了什麼。

function contains(Item item) 
{ 
    return Stack.getList().contains(item) 
} 

相反,如果你只想使用數組,你會需要遍歷數組中的每個值和執行等於它比較支持。

function contains(Item item) 
{ 
    for(int i = 0; i < itemArray.length;i++) 
    { 
     if(itemArray[i] == item) 
     { 
      return true;  
     } 
    } 
     return false; 
}