話不多說。**奉上,各種情況自認為考慮的比較完善啦,如有不足,請指正!
注釋上面都有,就不在一一解讀啦。
/*
主要功能:用兩個棧實現乙個佇列
具體實現:兩個棧,先進後出,現在要將其實現為佇列,先進先出
用棧s1完成資料的入,棧s2完成資料的彈出
棧s1只管資料的入,棧s2彈出的時候,先要保證佇列裡面有元素才可以彈出,
當棧s2為空時,必須將棧s1的元素全部彈出且入棧s2,不為空的時候直接彈出即可。
pop:彈出資料 top:獲得資料 push:輸入資料
*/#include #include #include #include using namespace std;
// 用兩個棧實現乙個佇列
class myqueue
int pop() //棧s2用來彈出資料
if(s2.empty())
}int result = s2.top();
s2.pop();
return result;
}bool empty() // 判斷模擬的佇列是否為空
int size() // 判斷模擬的佇列的實際長度
private:
stacks1; //stack是乙個裝有序列式容器的容器介面卡
stacks2;
};int main()
return 0;
}
用兩個棧實現佇列 及 兩個佇列實現棧功能
最近筆試遇到這個問題,感覺蠻有意思的,分析看看 一 問 用兩個棧實現乙個佇列的功能,要求給出演算法和思路 示意圖 答 設2個棧a,b,初始化為空 入隊 將新元素push入棧a 出隊 1 判斷棧b是否為空 2 如果不為空,則將棧a中所有元素依次pop出並push到棧b 3 將棧b的棧頂元素pop出 說...
兩個棧實現佇列的功能
分析 設定兩個棧s1 s2,一開始均為空。入隊 將新元素push入s1。出隊 1 判斷棧s2是否為空 2 如果s2為空,把s1中的所有元素全部pop出並且push到s2中,從s2中pop出棧頂元素即可出列 3 如果s2不為空,直接從s2中pop出棧頂元素即可出列 int enqueue int e ...
兩個棧實現佇列 兩個佇列實現棧
1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...