我在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");
}
}
答案 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