1.
龍港網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,龍港網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為龍港1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的龍港做網(wǎng)站的公司定做!
//使用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧,優(yōu)化版(1.入棧只如q1,出棧將q1數(shù)據(jù)倒q2,刪掉剛進(jìn)來的, //若q1無數(shù)據(jù),從q2倒,刪q2中最后一個(gè)數(shù)據(jù)2.只保證一個(gè)棧中有數(shù)據(jù),簡(jiǎn)單,易理解) //第一種實(shí)現(xiàn)

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();
else
return _q2.back();
}
protected:
queue<T> _q1;
queue<T> _q2;
};2.
//第二種實(shí)現(xiàn)
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();
}
else
return _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;
}
分享名稱:兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧
本文地址:http://chinadenli.net/article38/jhpcpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站設(shè)計(jì)公司、云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司、建站公司、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)