STL学习之stack

栈是一种容器适配器,是一种后入先出(LIFO )队列。

基本操作

stack<int>s;构造

stack<int>s1(s2);将s2赋值给s1

s.push(x);入栈

s.pop();出栈,注意:出栈操作只是删除栈顶的元素,并不返回该元素

s.top();访问栈顶

s.empty().判断栈空,当栈空时返回true

s.size();栈中的元素个数


问题:用stack实现FIFO的功能


// FIFObuildinStack.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<stack>
#include<iostream>
using namespace std;
class FIFO
{
private:
		stack<int>a;
	    stack<int>b;
public:
	//FIFO();
	void enqueue(int in);
	int dequeue();
	bool isempty();
	//~FIFO();
};
void FIFO::enqueue(int in)//入队
{
	int k;
	while (!b.empty())
	{
		k = b.top();
		a.push(k);
		b.pop();
	}
	a.push(in);
}

int FIFO::dequeue()//出队
{
	int cc;
	while (!a.empty())
	{
		cc = a.top();
		a.pop();
		b.push(cc);
	}
	int bb = b.top();
	b.pop();
	return bb;
}
bool FIFO::isempty()
{
	return(a.empty() && b.empty());

}
int _tmain(int argc, _TCHAR* argv[])
{
	FIFO fifo;
	fifo.enqueue(1);
	fifo.enqueue(3);
	fifo.enqueue(8);
	cout << fifo.dequeue() << endl;
	cout << fifo.dequeue() << endl;
	if (fifo.isempty())
		cout << "现在FIFO为空" << endl;
	cout << fifo.dequeue() << endl;
	if (fifo.isempty())
		cout << "现在FIFO为空" << endl;
	system("pause");
	return 0;
}




版权声明:

posted on 2015-07-04 10:34  moffis  阅读(209)  评论(0编辑  收藏  举报

导航