一种删除堆栈中与给定堆栈中其他元素相等的元素的方法
A method to delete elements in a stack that are equal to other elements in a given stack
我想实现一种删除堆栈 this
中与作为参数给出的堆栈 s
中的元素相等的元素的方法。
我试图做点什么,但没有用。我有 s1
和 s2
是临时堆栈,我想我正在做的是弹出 this
和 s
的堆栈顶部,然后比较它们检查它们是否相等,但我没有得到想要的结果。
输入:
this
:-5
4个
3个
3个
1
s
: 7
6个
4个
3个
1
输出:3
1
这是我的代码:
public void deleteEqualToOther(Stack s) {
Stack s1 = new Stack();
Stack s2 = new Stack();
while(!this.isEmpty() && !s.isEmpty()) {
if(this.stackTop() == s.stackTop())
s1.push(this.stackTop());
this.pop();
s2.push(s.stackTop());
s.pop();
}
while(!s1.isEmpty()) {
this.push(s1.stackTop());
s1.pop();
}
}
我不确定这是否是您要的,但是..
您可以遍历 Stack,像您一样弹出每个元素。如果该元素出现在另一个 Stack 中,则将其丢弃,否则将其添加到临时 Stack 中。完成后,您的 Stack 是空的,您的临时 Stack 包含您的 Stack 中但未出现在另一个 Stack 中的所有元素。遍历弹出元素的临时堆栈并将它们放回堆栈中。
public void deleteEqualToOther(Stack other) {
Stack temp = new Stack();
while (! isEmpty()) {
int value = pop();
if (! other.contains(value)) {
temp.put(value);
}
}
while (! temp.isEmpty()) {
put(temp.pop());
}
}
我想实现一种删除堆栈 this
中与作为参数给出的堆栈 s
中的元素相等的元素的方法。
我试图做点什么,但没有用。我有 s1
和 s2
是临时堆栈,我想我正在做的是弹出 this
和 s
的堆栈顶部,然后比较它们检查它们是否相等,但我没有得到想要的结果。
输入:
this
:-5
4个
3个
3个
1
s
: 7
6个
4个
3个
1
输出:3
1
这是我的代码:
public void deleteEqualToOther(Stack s) {
Stack s1 = new Stack();
Stack s2 = new Stack();
while(!this.isEmpty() && !s.isEmpty()) {
if(this.stackTop() == s.stackTop())
s1.push(this.stackTop());
this.pop();
s2.push(s.stackTop());
s.pop();
}
while(!s1.isEmpty()) {
this.push(s1.stackTop());
s1.pop();
}
}
我不确定这是否是您要的,但是.. 您可以遍历 Stack,像您一样弹出每个元素。如果该元素出现在另一个 Stack 中,则将其丢弃,否则将其添加到临时 Stack 中。完成后,您的 Stack 是空的,您的临时 Stack 包含您的 Stack 中但未出现在另一个 Stack 中的所有元素。遍历弹出元素的临时堆栈并将它们放回堆栈中。
public void deleteEqualToOther(Stack other) {
Stack temp = new Stack();
while (! isEmpty()) {
int value = pop();
if (! other.contains(value)) {
temp.put(value);
}
}
while (! temp.isEmpty()) {
put(temp.pop());
}
}