C++的栈和队列

C++中的栈(Stack)

栈是一种后进先出(LIFO)的数据结构,C++标准库提供了std::stack容器适配器,基于其他容器(如std::dequestd::list)实现。

常用操作
  • 声明栈

    #include <stack>
    std::stack<int> s; // 默认基于deque
    

  • 压栈(push)
    将元素添加到栈顶:

    s.push(10);
    

  • 弹栈(pop)
    移除栈顶元素(无返回值):

    s.pop();
    

  • 访问栈顶(top)
    获取栈顶元素但不移除:

    int top = s.top();
    

  • 判空(empty)
    检查栈是否为空:

    if (s.empty()) { /* ... */ }
    

  • 获取大小(size)
    返回栈中元素数量:

    size_t count = s.size();
    


C++中的队列(Queue)

队列是一种先进先出(FIFO)的数据结构,C++标准库提供了std::queue容器适配器,通常基于std::dequestd::list实现。

常用操作
  • 声明队列

    #include <queue>
    std::queue<int> q; // 默认基于deque
    

  • 入队(push)
    将元素添加到队尾:

    q.push(20);
    

  • 出队(pop)
    移除队首元素(无返回值):

    q.pop();
    

  • 访问队首(front)
    获取队首元素但不移除:

    int front = q.front();
    

  • 访问队尾(back)
    获取队尾元素但不移除:

    int back = q.back();
    

  • 判空(empty)
    检查队列是否为空:

    if (q.empty()) { /* ... */ }
    

  • 获取大小(size)
    返回队列中元素数量:

    size_t count = q.size();
    


性能与实现细节

  • 栈和队列的底层容器
    默认使用std::deque,但可以指定其他容器(如std::list):

    std::stack<int, std::list<int>> custom_stack;
    std::queue<int, std::list<int>> custom_queue;
    

  • 时间复杂度

    • 压栈/弹栈、入队/出队:$O(1)$
    • 访问栈顶/队首/队尾:$O(1)$
  • 应用场景

    • 栈:函数调用栈、括号匹配、表达式求值。
    • 队列:任务调度、BFS算法、消息缓冲。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值