堆栈(Stack)是一种常见的数据结构,它遵循先进后出(LIFO)的原则。在C++中,可以使用数组或链表来实现堆栈。
使用C++实现堆栈,可以定义一个Stack类,其中包含以下几个关键方法:
以下是一个使用数组实现堆栈的示例代码:
#include <iostream>
#define MAX_SIZE 100
class Stack {
private:
int top; // 栈顶指针
int stack[MAX_SIZE]; // 存储元素的数组
public:
Stack() {
top = -1; // 初始化栈顶指针为-1
}
void push(int element) {
if (top >= MAX_SIZE - 1) {
std::cout << "Stack overflow!" << std::endl;
return;
}
stack[++top] = element; // 将元素压入栈顶
}
void pop() {
if (top < 0) {
std::cout << "Stack underflow!" << std::endl;
return;
}
--top; // 从栈顶弹出元素
}
int topElement() {
if (top < 0) {
std::cout << "Stack is empty!" << std::endl;
return -1;
}
return stack[top]; // 返回栈顶元素
}
bool isEmpty() {
return (top < 0); // 判断栈是否为空
}
bool isFull() {
return (top >= MAX_SIZE - 1); // 判断栈是否已满
}
};
int main() {
Stack stack;
stack.push(1);
stack.push(2);
stack.push(3);
std::cout << "Top element: " << stack.topElement() << std::endl;
stack.pop();
stack.pop();
std::cout << "Top element: " << stack.topElement() << std::endl;
return 0;
}
这段代码实现了一个基本的堆栈数据结构,使用了数组作为底层存储结构。通过调用push()方法将元素压入堆栈,调用pop()方法从堆栈中弹出元素,调用topElement()方法获取堆栈顶部的元素,调用isEmpty()方法检查堆栈是否为空,调用isFull()方法检查堆栈是否已满。
堆栈的应用场景非常广泛,例如在函数调用过程中,可以使用堆栈来保存函数的局部变量和返回地址;在表达式求值中,可以使用堆栈来实现后缀表达式的计算;在深度优先搜索算法中,可以使用堆栈来保存遍历的节点等等。
腾讯云提供了一系列云计算相关产品,其中包括云服务器、云数据库、云存储等。具体关于腾讯云的产品介绍和相关链接地址,请参考腾讯云官方网站:https://cloud.tencent.com/
领取专属 10元无门槛券
手把手带您无忧上云