C++栈介绍

以下是一篇关于C++栈的2000字左右的介绍:

C++栈的介绍

在C++编程中,栈(Stack)是一种非常重要的数据结构,它遵循后进先出(Last In First Out,LIFO)的原则。这意味着最后放入栈中的元素将最先被取出,就像把书一本本叠放在一起,最后放上去的书会最先被拿走。栈在许多领域都有着广泛的应用,例如表达式求值、函数调用栈、深度优先搜索(DFS)算法、括号匹配问题等。

一、栈的基本概念

栈可以被看作是一个线性的数据结构,它只允许在一端进行插入和删除操作,这一端被称为栈顶(top)。主要的操作包括入栈(push),即将元素添加到栈顶;出栈(pop),即将栈顶元素移除;查看栈顶元素(top);以及判断栈是否为空(empty)等。

二、C++标准库中的栈

C++标准模板库(STL)提供了 stack 容器适配器,它使用其他容器(通常是 dequevector 作为底层容器)来实现栈的功能。以下是使用 stack 的基本示例:

#include <iostream>
#include <stack>

int main() {
   
   
    std::stack<int> s;

    // 入栈操作
    s.push(1);
    s.push(2);
    s.push(3);

    // 查看栈顶元素
    std::cout << "Top element: " << s.top() << std::endl;

    // 出栈操作
    s.pop();

    // 再次查看栈顶元素
    std::cout << "Top element after pop: " << s.top() << std::endl;

    // 检查栈是否为空
    if (s.empty()) {
   
   
        std::cout << "Stack is empty." << std::endl;
    } else {
   
   
        std::cout << "Stack is not empty." << std::endl;
    }

    // 栈的大小
    std::cout << "Stack size: " << s.size() << std::endl;

    return 0;
}

在这个示例中:

  • s.push(x) 是入栈操作,将元素 x 添加到栈顶。
  • s.pop() 是出栈操作,移除栈顶元素。注意,pop() 操作不会返回元素,仅移除栈顶元素。
  • s.top() 用于查看栈顶元素。
  • s.empty() 用于判断栈是否为空。
  • s.size() 可以获取栈中元素的数量。

三、栈的实现方式

1. 基于数组的栈

可以使用数组来实现一个简单的栈,需要维护一个栈顶指针来指示栈顶元素的位置。以下是一个简单的基于数组的栈实现:

#include <iostream>
#include <vector>

class ArrayStack {
   
   
private:
    std::vector<int> arr;
    int top;

public:
    ArrayStack() : top(-1) {
   
   }

    bool isEmpty() {
   
   
        return (top == -1);
    }

    void push(int x) {
   
   
        arr.push_back(x);
        top++;
    }

    int pop() {
   
   
        if (isEmpty()) {
   
   
            std::cout << "Stack is empty." << std
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

༺ཌༀ傲穹_Vortexༀད༻

你的鼓励奖是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值