要素がスタックの一部であるかどうかを確認する必要があります。ここに私が書いた関数があります:
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;
}
ご覧のとおり、たとえばスタックの最後の要素をチェックできるようにするには、スタックのすべての要素をポップする必要があります。また、要素を別のスタックに保存しているので、データが失われることはありません。しかし、要素は2番目のスタックに入力されたように反転され、実際にはリンクされたリストのようなものになっています. 私の質問は、スタックの要素をポップして別の場所に保存する必要なく、要素がスタックにあるかどうかを確認する別の方法があるかどうかです。