当前位置:实例文章 » 其他实例» [文章]数据结构--栈

数据结构--栈

发布人:shili8 发布时间:2024-11-17 08:58 阅读次数:0

**栈(Stack)数据结构**

栈是一种线性数据结构,它遵循后进先出(LIFO)的原则,即最后添加的元素将首先被移除。栈通常使用数组或链表来实现。

**栈的基本操作**

栈支持以下基本操作:

1. **push(x)**: 将元素 x 添加到栈顶。
2. **pop():** 移除并返回栈顶元素。
3. **peek():** 返回但不移除栈顶元素。
4. **isEmpty():** 检查栈是否为空。
5. **size():** 返回栈中元素的数量。

**栈的实现**

我们可以使用数组或链表来实现栈。下面是使用数组实现栈的示例代码:

cppclass Stack {
private:
 int* elements;
 int capacity;
 int top;

public:
 // 构造函数,初始化栈大小为10 Stack(int size =10) : capacity(size), top(-1) {
 elements = new int[capacity];
 }

 // 销毁栈 ~Stack() {
 delete[] elements;
 }

 // 将元素 x 添加到栈顶 void push(int x) {
 if (top == capacity -1) {
 // 栈满,需要扩容 int* temp = new int[capacity *2];
 for (int i =0; i <= top; ++i) {
 temp[i] = elements[i];
 }
 delete[] elements;
 elements = temp;
 capacity *=2;
 }
 elements[++top] = x;
 }

 // 移除并返回栈顶元素 int pop() {
 if (isEmpty()) {
 throw std::runtime_error("Stack is empty");
 }
 return elements[top--];
 }

 // 返回但不移除栈顶元素 int peek() {
 if (isEmpty()) {
 throw std::runtime_error("Stack is empty");
 }
 return elements[top];
 }

 // 检查栈是否为空 bool isEmpty() const {
 return top == -1;
 }

 // 返回栈中元素的数量 int size() const {
 return top +1;
 }
};


**栈的应用**

栈有许多实际应用,例如:

* **括号匹配**: 使用栈可以检查括号是否匹配。
* **表达式求值**: 使用栈可以实现表达式求值。
* **回溯算法**: 使用栈可以实现回溯算法。

**总结**

本文介绍了栈数据结构的基本概念、操作和实现。栈是一种线性数据结构,遵循后进先出(LIFO)的原则。它有许多实际应用,例如括号匹配、表达式求值和回溯算法。

相关标签:数据结构
其他信息

其他资源

Top