在计算机科学中,栈(Stack)是一种非常基础且重要的数据结构。它遵循“后进先出”(LIFO, Last In First Out)的原则,就像一摞盘子:你只能从顶部拿走或放上盘子。
本教程将带你用 C++语言 从零开始实现一个完整的栈数据结构。无论你是编程新手还是想复习基础知识,都能轻松理解!

栈是一种线性数据结构,只允许在一端进行插入和删除操作,这一端称为“栈顶”(Top)。另一端称为“栈底”(Bottom),是固定的。
栈的常见操作包括:
push():将元素压入栈顶pop():弹出栈顶元素top() 或 peek():查看栈顶元素但不删除isEmpty():判断栈是否为空size():返回栈中元素个数我们可以使用 C++ 的数组来手动实现一个栈。下面是一个完整的、易于理解的实现:
#include <iostream>#include <stdexcept> // 用于异常处理const int MAX_SIZE = 100; // 栈的最大容量class Stack {private: int data[MAX_SIZE]; // 存储栈元素的数组 int topIndex; // 栈顶索引(-1 表示空栈)public: // 构造函数 Stack() { topIndex = -1; } // 判断栈是否为空 bool isEmpty() { return topIndex == -1; } // 判断栈是否已满 bool isFull() { return topIndex == MAX_SIZE - 1; } // 压入元素 void push(int value) { if (isFull()) { throw std::overflow_error("栈已满,无法压入新元素!"); } data[++topIndex] = value; } // 弹出元素 int pop() { if (isEmpty()) { throw std::underflow_error("栈为空,无法弹出元素!"); } return data[topIndex--]; } // 查看栈顶元素 int peek() { if (isEmpty()) { throw std::underflow_error("栈为空,无栈顶元素!"); } return data[topIndex]; } // 获取栈大小 int size() { return topIndex + 1; }};下面是一个简单的使用示例,演示了如何创建栈、压入和弹出元素:
int main() { Stack s; std::cout << "压入元素 10, 20, 30...\n"; s.push(10); s.push(20); s.push(30); std::cout << "栈顶元素是: " << s.peek() << std::endl; // 输出 30 std::cout << "栈的大小: " << s.size() << std::endl; // 输出 3 std::cout << "依次弹出元素:\n"; while (!s.isEmpty()) { std::cout << s.pop() << " "; // 输出 30 20 10 } std::cout << std::endl; return 0;}上面的实现使用了固定大小的数组,因此有容量限制。在实际开发中,你可以:
std::vector)实现可变大小的栈std::stack(但学习手动实现有助于理解原理)掌握 C++栈实现 是学习更复杂算法(如深度优先搜索、表达式求值等)的基础。这也是 数据结构入门 的关键一步。
通过本教程,你已经学会了:
希望这篇 C++编程教程 能帮助你打下坚实的数据结构基础!继续练习,尝试用链表实现栈,或解决一些栈相关的经典问题(如括号匹配、逆波兰表达式等)。
记住:理解 栈数据结构 是迈向高级编程的重要一步!
本文由主机测评网于2025-12-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126546.html