多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 【數據結構】棧面試題--兩個棧實現一個隊列

【數據結構】棧面試題--兩個棧實現一個隊列

來源:程序員人生   發布時間:2016-12-12 15:49:05 閱讀次數:3590次

首先我們必須清楚,棧先進后出,隊列先進先出。這道他們各自的特點以后,我們用兩個棧來實現1個隊列。

下邊給出圖片:


下邊給出代碼:

template<typename T> class Queue { public: void Push(const T& x) { if (!_s2.empty()) { while (!_s2.empty()) { _s1.push(_s2.top()); _s2.pop(); } } _s1.push(x); } void Pop() { if (_s1.empty() && _s2.empty())//s1,s2均為空 { return; } if (!_s2.empty())//s2不為空 { _s2.pop(); } if (!_s1.empty() && _s2.empty())//s1不為空 { //while(!_s1.empty()) while (_s1.size() != 1) { _s2.push(_s1.top());//可以少push1次 _s1.pop(); } _s1.pop(); } } void Display() { while (!_s2.empty()) { cout << _s2.top() << " "; _s2.pop(); } while (!_s1.empty()) { _s2.push(_s1.top()); _s1.pop(); } while (!_s2.empty()) { cout << _s2.top() << " "; _s2.pop(); } } int Size() { return _s1.size() + _s2.size(); } public: stack<T> _s1; stack<T> _s2; }; void test() { Queue<int> q; cout << q.Size() << endl; q.Push(2); q.Push(3); q.Push(1); q.Pop(); q.Push(4); q.Push(5); q.Pop(); cout << q.Size() << endl; q.Display(); } int main() { test(); system("pause"); return 0; }


以上代碼的實現方法是圖片右下角的解決方案所述(即就是:push時,如果棧2不為空,將棧2的元素push進棧1,

然后,直接將新的元素push進棧1;如果棧2為空,直接push進棧1      pop時,當棧2不為空,直接從棧2pop;當棧

2為空,將棧1的元素push進棧2(可以少push1次),彈出棧頂元素)

下邊再給出另外1種實現辦法(即就是1次pop以后,棧2的元素都push進棧1,具體思路圖片中并沒有提出):

看下邊的代碼(僅僅給出pop和push函數,其他的函數都同上)

void Push(const T& x) { _s1.push(x); } void Pop() { if (_s1.empty() && _s2.empty())//s1,s2均為空 { return; } if (!_s2.empty())//s2不為空 { _s2.pop(); } else if (!_s1.empty() && _s2.empty())//s1不為空 { //while(!_s1.empty()) while (_s1.size() != 1) { _s2.push(_s1.top());//可以少push1次 _s1.pop(); } _s1.pop(); } while (!_s2.empty()) { _s1.push(_s2.top()); _s2.pop(); } }


上邊代碼就實現了每次pop完以后,都將棧2中的剩余元素push進棧1,這類方法可能較第1種方法麻煩1點,但是都

可以實現。

如果以上敘述有問題,可以提出~~~

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国内一区 | 亚洲日本中文 | 久久国产精品久久国产片 | 欧美人与zoxxxx视频 | 国内成人精品亚洲日本语音 | 欧美日韩视频一区二区三区 | 色亚洲影院 | 欧美在线成人免费国产 | 国产爱v| 尤物网站永久在线观看 | 欧美18vide0sex性欧美在线 | 久久一本一区二区三区 | 国产99对白在线播放 | 日本欧美人xxxxx在线观看 | 国产私人尤物无码不卡 | 亚洲激情校园 | 亚洲一级在线 | 欧美日本黄色片 | 在线播放69热精品视频 | 国产香蕉影视院 | 亚洲精品日韩一区二区日本 | 亚洲三级图片 | 欧美精品国产综合久久 | 久久国产成人福利播放 | 我爱52av好色 | 亚洲国产精品福利片在线观看 | 国产九九热视频 | 手机看片福利日韩欧美看片 | 日本二区免费一片黄2019 | 免费的黄网站 | 日韩性网站 | 国产或人精品日本亚洲77美色 | 一级做a爱 一区 | 亚洲精品www| 波多野结衣欧美 | 日本8888xxxx免费视频 | 精品国产福利在线观看网址2022 | free性欧美人与牛 | 致命坏男人漫画登录页面免费漫画第三话 | 视频日韩p影院永久免费 | 日韩福利在线 |