2011-03-02 41 views
0

我在Java中使用Stack類。但搜索方法不工作..Stack類中的搜索方法

這裏是我與臨時工數組元素使用的代碼是d b a g e c b

int x=0,y=0; 
ss.setSize(50); 
     ss.push(temps[x]); 
     System.out.print(temps[x]); 
     ss.push(1); 
     System.out.println(" 1"); 
     for(x=1;x<z;x++){ 
      if((y=ss.search(temps[x]))>=0){ 
       System.out.println("Hi......from the search"); 
      } 
     else{ 
     ss.push(temps[0]); 
     System.out.print(temps[x]); 
     ss.push(1); 
     System.out.println(" 1"); 
     } 
     } 
+2

你期望它做什麼,出了什麼問題? – jjnguy 2011-03-02 14:22:30

+1

'temps [x]'的類型是什麼?具體來說,是否重寫'equals'以通過非身份進行比較? – 2011-03-02 14:25:36

回答

2

步驟通過您的代碼,你會注意到的唯一項目被提上堆棧是'd'和1.另外,您正在搜索的唯一項目是'b','a','g','e'和'c'。所以,搜索將始終返回-1。

總之,搜索工作正常,你的代碼邏輯不完全正確。

0

在我看來,你想要一個不存儲重複的堆棧。

有一個可疑的行:

else{ 
    ss.push(temps[0]); // <--- this should be temps[x] 
0

的邏輯是錯誤的。它應該類似於 -

while length is 0 to temps_length-1 // length increments by 1 at each iteration 

    variable returnValue Equals to stack.search(temps[length]) 

    if returnValue Equals To -1 
     Add Element to the Stack if the stack is not full 

    else 
     Element found on the stack 

    end if 

End while