0
我想知道是否有方法檢查堆棧中是否存在元素。 假設堆棧接口有push,pop,isEmpty,getTop,成員函數。檢查堆棧中是否存在元素
我知道我們可以做到這一點,如果我們得到頂部,與該元素進行比較並彈出它,直到它變空。但是這種方法會很費錢,因爲我們必須創建另一個棧來存儲彈出式元素並重新恢復。
我想知道是否有方法檢查堆棧中是否存在元素。 假設堆棧接口有push,pop,isEmpty,getTop,成員函數。檢查堆棧中是否存在元素
我知道我們可以做到這一點,如果我們得到頂部,與該元素進行比較並彈出它,直到它變空。但是這種方法會很費錢,因爲我們必須創建另一個棧來存儲彈出式元素並重新恢復。
下面是一個方法中的一些僞代碼,用來檢查一個元素是否爲在棧:
template<class T>
bool find (stack<T> source, T value)
{
while (!source.isEmpty() && source.top() != value)
source.pop();
if (!source.isEmpty())
return true;
return false;
}
這是至關重要的是,源堆棧是由值來傳遞,以便它不被修改。另外,要認識到這個解決方案可能不如使用不同的容器而不是堆棧,而只是簡單地調用一個檢查值的方法。
謝謝。你介意我是否在另一個問題中使用了你的代碼:)? – user2878007
你必須得到額外的O(n)時間或O(n)空間的幫助。 –
如果你可以做到這一點,否則它不只是一個堆棧。 – kennytm