顺序栈的具体实现。其中包含:建立链式栈、元素入栈、出栈、判栈空、求栈长度、取栈顶元素和遍历栈等基本操作。用c语言或者c++写出代码
时间: 2024-09-22 19:09:44 浏览: 54
顺序栈是一种基于数组实现的线性数据结构,它按照先进后出(LIFO,Last In First Out)的原则进行操作。以下是使用C++实现的一个简单顺序栈的示例:
```cpp
#include <iostream>
const int MAX_SIZE = 100; // 栈的最大容量
class Stack {
private:
int top; // 栈顶指针
int data[MAX_SIZE]; // 存储栈元素的数组
public:
Stack() : top(-1) {} // 构造函数,初始化栈顶指针
// 判断栈是否为空
bool isEmpty() {
return top == -1;
}
// 判栈满
bool isFull() {
return top == MAX_SIZE - 1;
}
// 入栈操作
void push(int value) {
if (isFull()) {
std::cout << "Stack is full.\n";
return;
}
data[++top] = value;
}
// 出栈操作(返回值)
int pop() {
if (isEmpty()) {
std::cout << "Stack is empty.\n";
return -1; // 返回非法值表示栈空
}
return data[top--];
}
// 取栈顶元素(不删除)
int peek() {
if (isEmpty()) {
std::cout << "Stack is empty.\n";
return -1; // 同上,表示栈空
}
return data[top];
}
// 遍历栈(打印所有元素,假设这里不支持循环遍历)
void traverse() {
if (isEmpty()) {
std::cout << "Stack is empty.\n";
} else {
for (int i = 0; i <= top; ++i) {
std::cout << "Element at index " << i << ": " << data[i] << "\n";
}
}
}
// 求栈长度
int size() {
return top + 1; // 返回栈的实际元素个数,包括栈顶
}
};
int main() {
Stack s;
s.push(5);
s.push(10);
s.push(15);
std::cout << "Stack length: " << s.size() << "\n";
std::cout << "Top element: " << s.peek() << "\n";
s.pop();
s.traverse();
return 0;
}
```
这个程序创建了一个顺序栈,并演示了如何进行入栈、出栈、查看栈顶元素、遍历栈以及获取栈的长度等操作。注意,实际应用中,如果需要循环遍历栈,通常会使用迭代而非递归,因为栈的特性决定了不适合用递归访问。
阅读全文