C++ stack

stack

stack是一种先进后出(First In Last Out,FILO)的数据结构。它只有一个出口,stack允许新增元素,移除元素,取得最顶端元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素,换而言之,stack不允许有遍历行为。
将元素推入stack的操作称为push,将元素推出stack的操作称为pop.
以某种既有容器作为底部结构,将其接口改变,使之符合“先进后出”的特性,形成一个stack,是很容易做到的。deque是双向开口的数据结构,若以deque为底部结构并封闭其头端开口,便轻而易举地形成了一个stack.以deque作为缺省情况下的stack底部结构,stack的实现很简单。
由于stack系以底部容器完成其所有工作,而具有这种“修改某物接口,形成另一种风貌”之性质者,成为(配接器,适配器)adapter,因此SLT stack 往往不被归类为container(容器),而被归类为container adapter。
stack所有元素的进出都必须符合“先进后出”的条件,只有stack顶端的元素,才有机会被外界取用。stack不提供走访功能,也不提供迭代器。
除了deque之外,list也是双向开口的数据结构。因为若以list底部结构并封闭其头端开口,一样能够轻易形成一个stack。

stack::empty()函数 功能:栈为空则返回真
stack::pop()函数 功能:移除栈顶元素
stack::push()函数 功能:在栈顶添加元素
stack::size()函数 功能:返回栈中元素数目
stack::top()函数 功能:返回栈顶元素
#include<iostream>
#include<stack>
using namespace std;

int main(){
     //stack::empty()函数 功能:栈为空则返回真
     //stack::pop()函数 功能:移除栈顶元素
	 //stack::push()函数 功能:在栈顶添加元素
	 //stack::size()函数 功能:返回栈中元素数目 
	 //stack::top()函数 功能:返回栈顶元素 
	 stack<int>mystack;
	 int sum(0);
	 for(int i=0;i<11;i++){
	 	mystack.push(i);
	 }
	 cout<<"mystack size:"<<mystack.size()<<endl;
	 cout<<"mystack.top() is now :"<<mystack.top()<<endl;
	 while(!mystack.empty()){
	 	sum+=mystack.top();
	 	mystack.pop();
	 }
	 cout<<"total:"<<sum<<endl; 
     // stack::stack()函数 功能: 构造stack
}     

运行结果

mystack size:11
mystack.top() is now :10
total:55

参考文献:《The Annotated STL Sources》侯捷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值