STL stack 的实现

本文介绍了一种典型的数据结构——栈(stack)。栈是一种遵循先进后出(FILO)原则的数据结构,只允许在一端进行插入和删除操作。文章提供了一个使用C++实现的栈结构示例,展示了栈的基本操作如压栈(push)、弹栈(pop)和获取栈顶元素(top)等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stack 结构的特点:
stack 是一种先进先出(First In Last Out) 的数据结构,它只有一个出口,stack 允许新增元素,移除元素,取的顶端的元素。

stack 以底部容器完成其所有的工作,而具有这种 “修改某物接口,形成另一种风貌”之性质者,称为 adapter (配接器)。所以 stack 往往不被称为 container ,而往往被称为 container adapter 。

#include <iostream>
#include<list>
using namespace std;

template<class T,class Sequence = list<T> >
class Stack
{
    typedef typename Sequence :: value_type value_type;
    typedef typename Sequence :: reference  reference;

protected:
    Sequence c;
public:
    bool   empty(){return c.empty();}
    size_t size() {return c.size();}
    reference top() {return *(--(c.end()));} 
    void   push(const T& x) {return c.push_back(x);}
    void   pop(){return c.pop_back();}

public:
    bool operator==(const Stack<T,list<T>> & x) {return c==x.c ;}
    bool operator!=(const Stack<T,list<T>> & x) {return c!=x.c ;}

};

int main()
{
    Stack<int > x;
    x.push(3);
    x.push(4);
    x.push(5);
    x.push(6);
    x.push(7);
    x.push(8);

    cout<<x.top()<<endl;
    x.pop();
    cout<<x.top()<<endl;
    x.pop();
    cout<<x.top()<<endl;
    x.pop();
    cout<<x.top()<<endl;


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值