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

溫馨提示×

溫馨提示×

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

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

關于棧和隊列的相關問題

發布時間:2020-07-31 15:41:29 來源:網絡 閱讀:247 作者:yayaru9240 欄目:編程語言
#include<iostream>
using namespace std;
#include<stack>
#include<queue>
#include<assert.h>
//template<class T>
//兩個棧實現一個隊列
//class StackToqueue
//{
//public:
//	StackToqueue()
//	{}
//	void Push(const T& x)
//	{//始終保持讓棧1進
//		_stack1.push(x);
//	}
//	T Pop()
//	{
//		if (_stack2.empty() && !_stack1.empty())
//		{//如果棧2為空且棧1不為空,則將棧1的所有元素導入到棧2中,保證棧1進,棧2出
//			while (!_stack1.empty())
//			{
//				_stack2.push(_stack1.top());
//				_stack1.pop();
//			}
//		}
//		T StackPopElm = _stack2.top();
//		 _stack2.pop();
//		 return StackPopElm;
//	}
//	~StackToqueue()
//	{}
//protected:
//	stack<T> _stack1;
//	stack<T> _stack2;
//};
//
//void Test()
//{
//	StackToqueue<int> s;
//	s.Push(1);
//	s.Push(2);
//	s.Push(3);
//	s.Push(4);
//	s.Push(5);
//	s.Push(6);
//	s.Push(7);
//	s.Push(8);
//	s.Push(9);
//	s.Push(10);
//	cout << s.Pop() << " " <<endl;
//	cout << s.Pop() << " " << endl;
//	s.Push(11);
//	cout << s.Pop() << " " << endl;
//	cout << s.Pop() << " " << endl;
//}

//兩個隊列實現一個棧
//template<class T>
//class QueueToStack
//{
//public:
//	QueueToStack()
//	{}
//	void push(const T& x)
//	{//如果隊列1不為空則讓元素入到這個不為空的隊列中,若為空,默認入到隊列2中
//		if (!_queue1.empty())
//		{
//			_queue1.push(x);
//		}
//		else
//			_queue2.push(x);
//	}
//	T Pop()
//	{
//		if (_queue1.empty() && _queue2.empty())
//		{
//			return -1;
//		}
//		//如果-個隊列不為空,讓該隊列的前n-1個元素出隊列,放入到另一個隊列中
//		//讓該隊列中保持只有一個元素然后讓其出隊列
//		if (!_queue1.empty())
//		{
//			while (_queue1.front() && _queue1.front() != _queue1.back())
//			{
//				_queue2.push(_queue1.front());
//				_queue1.pop();
//			}
//			T QueuePopElm = _queue1.front();
//			_queue1.pop();
//			return QueuePopElm;
//
//		}
//		if (!_queue2.empty())
//		{
//			while (_queue2.front() && _queue2.front() != _queue2.back())
//			{
//				_queue1.push(_queue2.front());
//				_queue2.pop();
//			}
//			T QueuePopElm = _queue2.front();
//			_queue2.pop();
//			return QueuePopElm;
//		}
//	}
//	~QueueToStack()
//	{}
//protected:
//	queue<T> _queue1;
//	queue<T> _queue2;
//};

//void Test()
//{
//	QueueToStack<int> q;
//	q.push(1);
//	q.push(2);
//	q.push(3);
//	q.push(4);
//	q.push(5);
//	q.push(6);
//	q.push(7);
//	q.push(8);
//	cout << q.Pop() << " ";
//	cout << q.Pop() << " ";
//	cout << q.Pop() << " ";
//	q.push(9);
//	cout << q.Pop() << " ";
//	cout << q.Pop() << " ";
//}

//求一個棧中的最小元素
//template<class T>
//class StackMin
//{
//public:
//	StackMin()
//	{}
//	T GetStackMinTop()
//	{
//		return _stack_min.top();
//	}
//	void Push(const T&x)//兩個棧同時入元素,保存最小數的那個棧在入棧前先要與該棧頂元素相比較
//	{ //始終保持保存最小數的那個棧的棧頂元素是當前所有元素之中最小的
//		_stack.push(x);
//		if (_stack_min.empty())
//		{
//			_stack_min.push(x);
//		}
//		else
//		{
//			if (_stack_min.top() < x)
//			{
//				_stack_min.push(GetStackMinTop());
//			}
//			else
//			{
//				_stack_min.push(x);
//			}
//		}
//	}
//	void Pop()
//	{
//		if (!_stack.empty() && !_stack_min.empty())
//		{
//			_stack.pop();
//		    _stack_min.pop();
//		}
//	}
//protected:
//	stack<T> _stack;
//	stack<T> _stack_min;
//};
//
//void Test()
//{
//	StackMin<int> sm;
//	sm.Push(2);
//	sm.Push(8);
//	sm.Push(6);
//	sm.Push(9);
//	sm.Push(1);
//	sm.Push(5);
//	cout << sm.GetStackMinTop() << endl;
//	sm.Pop();
//	cout << sm.GetStackMinTop() << endl;
//	sm.Pop();
//	cout << sm.GetStackMinTop() << endl;
//	sm.Push(0);
//	cout << sm.GetStackMinTop() << endl;
//
//}
//判斷出棧順序的合法性
template<class T>
class Stack
{
public:
	Stack()
	{}
	bool IsLegal(const char* pushstr, const char* popstr)
	{
		assert(pushstr && popstr);
		if (strlen(pushstr) != strlen(popstr))
			return false;
		while (*pushstr || !_stack.empty())
		{//如果入棧序列不為空或者棧不為空
			_stack.push(*pushstr++);
			while(!_stack.empty()&&_stack.top()==*popstr)
			{//若棧不為空且棧頂元素與出棧序列元素相同,則出棧序列指針后移同時將棧頂元素出棧
				popstr++;
				_stack.pop();
			}	
			//如果入棧序列已為空且出棧序列元素不與棧頂元素匹配
			if (*pushstr == '\0' && !_stack.empty() && *popstr != _stack.top())
				return false;
		}
			return true;
	}
	~Stack()
	{}
protected:
	stack<T> _stack;
};

void Test()
{
	Stack<char> s;
	char* str = "12345";
	char* dst = "54321";
	cout << s.IsLegal(str, dst) << endl;
}


向AI問一下細節

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

AI

手机| 安陆市| 集安市| 民权县| 东莞市| 建宁县| 兴隆县| 正宁县| 大英县| 乳山市| 曲周县| 资阳市| 巢湖市| 乌审旗| 随州市| 张家口市| 佛坪县| 西吉县| 临沭县| 永胜县| 灌云县| 曲麻莱县| 呼伦贝尔市| 库车县| 商丘市| 博兴县| 明溪县| 临泉县| 罗源县| 万荣县| 杭锦后旗| 台北县| 蓬莱市| 林口县| 白山市| 永康市| 财经| 昭通市| 兴国县| 宁国市| 息烽县|