我需要检查元素是否是堆栈的一部分。这是我编写的函数:
template<class T>
bool CheckElem(Stack<T>& A, T x)
{
Stack<T> B;
bool check = false;
while(!A.Empty())
{
if(A.Top() == x) check = true;
B.Push(A.Top());
A.Pop();
}
A = B;
if(check) return true;
return false;
}
就像您看到的那样,我需要弹出堆栈的所有元素才能检查例如堆栈的最后一个元素。而且我将元素保存在另一个堆栈中,所以我不会丢失我的数据。但是这些元素被颠倒了,就像它们被输入到第二个堆栈中一样,实际上它正在变成一个类似于链表的东西。我的问题是是否有另一种方法来检查元素是否在堆栈中,而无需弹出并将堆栈的元素保存在另一个地方。