91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

利用兩個棧實現隊列

發布時間: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

巴塘县| 定襄县| 疏附县| 萨嘎县| 集安市| 锡林郭勒盟| 湟源县| 双流县| 洛扎县| 惠州市| 依安县| 类乌齐县| 谷城县| 临海市| 邮箱| 孝昌县| 神木县| 阿拉善右旗| 湄潭县| 娱乐| 诸暨市| 北海市| 玛曲县| 金门县| 万宁市| 镇宁| 温宿县| 高平市| 乐亭县| 公主岭市| 漳平市| 庄河市| 盐城市| 韩城市| 綦江县| 株洲市| 榆树市| 曲麻莱县| 津市市| 博野县| 新津县|