Stack类中的搜索方法

时间:2011-03-02 14:16:57

标签: java

我在Java中使用Stack类。但搜索方法不起作用..

以下是我使用的代码,其中temps数组中的元素为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");
       }
      }

3 个答案:

答案 0 :(得分:2)

逐步执行您的代码,您会注意到堆放的唯一项目是'd'和1.此外,您要搜索的唯一项目是'b','a','g',' e'和'c'。因此,搜索将始终返回-1。

简而言之,搜索工作正常,您的代码逻辑并不完全正确。

答案 1 :(得分:0)

在我看来,你想要一个不存储重复项的堆栈。

有一条可疑线:

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

答案 2 :(得分: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