亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用兩個棧實現隊列

發布時間:2020-07-20 19:16:40 來源:網絡 閱讀:285 作者:sunshine225 欄目:編程語言


方法一:

入隊時,將元素壓入s1

出隊時,將s1的元素逐個“倒入”(彈出并壓入)s2,將s2的頂元素彈出作為出隊元素,之后再將s2剩下的元素逐個“倒回”s1


方法二:

入隊時,先判斷s1是否為空,如不為空,說明所有元素都在s1,此時將入隊元素直接壓入s1;如為空,要將s2的元素逐個“倒回”s1,再壓入入隊元素。

出隊時,先判斷s2是否為空,如不為空,直接彈出s2的頂元素并出隊;如為空,將s1的元素逐個“倒入”s2,把最后一個元素彈出并出隊。


最優解:

入隊時,將元素壓入s1

出隊時,判斷s2是否為空,如不為空,則直接彈出頂元素;如為空,則將s1的元素逐個“倒入”s2,把最后一個元素彈出并出隊。


注意:考慮沒有元素可供出隊時的處理(2個棧都為空的時候,出隊操作一定會引起異常)

代碼實現

//test1.h
#include<iostream>
#include<stack>
using namespace std;
template<class T>
class queueWithTwoStack
{
public:
	queueWithTwoStack();
	~queueWithTwoStack();
	void addTail(const T& data);
	T deleteHead();
private:
	stack<T> s1;
	stack<T> s2;
};

//test1.cpp
#include "test1.h"
using namespace std;
template<class T>
queueWithTwoStack<T>::queueWithTwoStack()
{}
template<class T>
queueWithTwoStack<T>::~queueWithTwoStack()
{}
//加只加在S1中
template<class T>
void queueWithTwoStack<T>::addTail(const T& data)
{
	s1.push(data);
}
//刪只刪S2中的
template<class T>
T queueWithTwoStack<T>::deleteHead()
{
	if((s2.empty())&&(s1.empty()))
	{
		printf("is empty!\n");
		return -1;
	}
	//s2為空,把S1全倒在S2中后刪
	if(s2.empty())
	{
		while(!s1.empty())
		{
			T top=s1.top();
			s1.pop();
			s2.push(top);
		}
	}
	//s2不為空直接刪
	T head=s2.top();
	s2.pop();
	return head;	
}
void test1()
{
	queueWithTwoStack<int> qw;
	qw.addTail(1);
	qw.addTail(2);
	qw.addTail(3);
	cout<<qw.deleteHead()<<endl;

	cout<<qw.deleteHead()<<endl;
	cout<<qw.deleteHead()<<endl;

	//cout<<qw.deleteHead()<<endl;
}
void test2()
{
	queueWithTwoStack<int> qw;
	qw.addTail(1);
	qw.addTail(2);
	qw.addTail(3);
	cout<<qw.deleteHead()<<endl;

	qw.addTail(4);
	cout<<qw.deleteHead()<<endl;
	cout<<qw.deleteHead()<<endl;
	cout<<qw.deleteHead()<<endl;
}
int main()
{
	//test1();
	test2();
	system("pause");
	return 0;
}


參考:《劍指offer》面試題7

    http://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁强县| 同心县| 贺兰县| 抚顺市| 额尔古纳市| 大连市| 宜兰县| 胶州市| 武鸣县| 彰化县| 杭州市| 罗甸县| 屯门区| 泽州县| 利川市| 会同县| 南木林县| 安图县| 遂宁市| 石泉县| 龙胜| 普兰县| 莎车县| 洛南县| 金川县| 始兴县| 镇赉县| 荣昌县| 句容市| 沁源县| 德阳市| 桃源县| 南和县| 普安县| 福鼎市| 武功县| 烟台市| 庆阳市| 浦东新区| 桂平市| 城市|