我需要检查元素是否是堆栈的一部分。这里是我写的函数:检查元素是否是堆栈的一部分
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;
}
就像你看到的,我需要弹出堆栈的所有元素能够检查例如堆栈的最后一个元素。而且我将这些元素保存在另一个堆栈中,所以我不会丢失数据。但是这些元素倒过来就像它们进入第二个堆栈,事实上它变成了一个链接列表。 我的问题是,如果有另一种方法来检查元素是否在堆栈中,而不需要在另一个地方弹出并保存堆栈的元素。
如果这是一个类或类似的东西,你想把它看作一个纯粹的堆栈,那么没有其他办法。 –
您是否必须按原样实现堆栈,或者您可以更改堆栈以实现向量内部的矢量? –
请注意,在做'A = B之前,你需要以某种方式取消B;' –