日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > 【數(shù)據(jù)結(jié)構(gòu)】棧面試題--兩個棧實現(xiàn)一個隊列

【數(shù)據(jù)結(jié)構(gòu)】棧面試題--兩個棧實現(xiàn)一個隊列

來源:程序員人生   發(fā)布時間:2016-12-12 15:49:05 閱讀次數(shù):3601次

首先我們必須清楚,棧先進(jìn)后出,隊列先進(jìn)先出。這道他們各自的特點以后,我們用兩個棧來實現(xiàn)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; }


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

然后,直接將新的元素push進(jìn)棧1;如果棧2為空,直接push進(jìn)棧1      pop時,當(dāng)棧2不為空,直接從棧2pop;當(dāng)棧

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

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

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

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(); } }


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

可以實現(xiàn)。

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

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久免费视频在线 | 精品久久久久久久久久久aⅴ | 欧美v日韩| 久久久久国产精品免费免费搜索 | 色姑娘综合色 | 国产精品第一国产精品 | www.成人 | 久久这里只有精品6 | 欧美成人免费网站 | 一级性视频 | 亚洲欧洲av在线 | 99re6热只有精品免费观看 | 福利一区二区 | 日本大片免a费观看视频的特点 | 人人射人人干 | 8x成人在线电影 | 成人精品一区二区三区电影黑人 | 久久高清国产 | 成人h动漫精品一区二区 | 日韩精品在线观看视频 | 欧美在线观看第一页 | 不卡视频一区二区三区 | 在线视频日韩精品 | 亚洲色图欧美激情 | 中文成人在线 | 日产一二三四五六区传媒 | 久久机热这里只有精品 | 国产一区二区三区观看 | 国产一级片在线播放 | 亚洲激情在线观看 | 日韩欧美自拍 | 精品一区av | 91超碰在线免费观看 | 成年人在线观看视频 | 精品久久三级 | 欧美午夜精品久久久久久人妖 | 国产美女被遭强高潮免费网站 | 欧美一级一 | 五月激情综合 | 欧美手机在线观看 | 日韩电影一区二区三区 |