兩個隊列實現一個棧

來源:互聯網
上載者:User

標籤:棧的應用

1.

//使用兩個隊列實現一個棧,最佳化版(1.入棧只如q1,出棧將q1資料倒q2,刪掉剛進來的,//若q1無資料,從q2倒,刪q2中最後一個資料2.只保證一個棧中有資料,簡單,易理解)//第一種實現

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/7F/6A/wKioL1cd95KCQJclAAA6iAxO2ew552.png" title="無標題.png" alt="wKioL1cd95KCQJclAAA6iAxO2ew552.png" />

template<class T>class Stack{public:bool Empty(){return _q1.empty() && _q2.empty();}void Push(const T& x){_q1.push(x);}void Pop(){assert((!_q1.empty()) || (!_q2.empty()));if (_q1.empty()){while (_q2.size()!= 1){_q1.push(_q2.front());_q2.pop();}_q2.pop();}else{while (_q1.size()!= 1){_q2.push(_q1.front());_q1.pop();}_q1.pop();}}int Size(){return _q1.size() + _q2.size();}//先取_q1的back,若_q1為空白,再取_q2的值T& Top(){assert((!_q1.empty()) || (!_q2.empty()));if (!_q1.empty())return _q1.back();elsereturn _q2.back();}protected:queue<T> _q1;queue<T> _q2;};

2.

//第二種實現template<class T>class  Stack{public:void Push(const T& x){if (!_q2.empty())_q2.push(x);else_q1.push(x);}void Pop(){if (!_q1.empty()){while (_q1.size() != 1){_q2.push(_q1.front());_q1.pop();}_q1.pop();}else{while (_q2.size() != 1){_q1.push(_q2.front());_q2.pop();}_q2.pop();}}T& Top(){if (!_q1.empty()){return _q1.back();}elsereturn _q2.back();}protected:queue<T> _q1;queue<T> _q2;};void Test1(){Stack<int> s1;s1.Push(1);s1.Push(2);s1.Push(3);s1.Push(4);s1.Push(5);s1.Pop();cout << s1.Top() << endl;s1.Pop();cout << s1.Top() << endl;//cout << s1.Size() << endl;s1.Push(6);cout << s1.Top() << endl;s1.Pop();cout << s1.Top() << endl;s1.Push(7);cout << s1.Top() << endl;s1.Pop();s1.Pop();s1.Pop();cout << s1.Top() << endl;}


本文出自 “小止” 部落格,請務必保留此出處http://10541556.blog.51cto.com/10531556/1767625

兩個隊列實現一個棧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.