编写及实现顺序栈的定义及基本操作函数编写一个程序sqstack.cpp,实现顺序栈(假设栈的基本元素类型为char)的各种基本运算
时间: 2024-10-22 09:22:00 浏览: 51
8583 顺序栈的基本操作
顺序栈(Sequential Stack)是一种基于数组实现的数据结构,其特点是后进先出(LIFO,Last In First Out)。在`sqstack.cpp`文件中,我们可以定义一个栈结构体,包含一个字符数组作为存储区域以及两个变量来追踪栈顶指针和当前栈的容量。以下是基本的顺序栈定义和一些基本操作函数:
```cpp
#include <iostream>
// 定义顺序栈 struct
struct SeqStack {
char* data; // 存储数据的字符数组
int top; // 栈顶元素索引
int capacity; // 栈的最大容量
// 初始化栈,分配空间
SeqStack(int size) : data(new char[size]), top(0), capacity(size) {}
// 判断栈是否为空
bool isEmpty() const {
return top == 0;
}
// 判断栈是否已满
bool isFull() const {
return top == capacity;
}
// 入栈(push)
void push(char item) {
if (isFull()) {
std::cout << "Stack overflow.\n";
return;
}
data[top++] = item;
}
// 出栈(pop)
char pop() {
if (isEmpty()) {
std::cout << "Stack underflow.\n";
return '\0';
}
return data[--top];
}
// 获取栈顶元素但不删除
char peek() const {
if (isEmpty()) {
std::cout << "Stack is empty.\n";
return '\0';
}
return data[top];
}
// 销毁栈,释放内存
~SeqStack() {
delete[] data;
}
};
int main() {
SeqStack stack(5); // 创建一个容量为5的栈
// 测试栈的操作
stack.push('A');
stack.push('B');
stack.push('C');
std::cout << "Top element: " << stack.peek() << "\n";
stack.pop();
std::cout << "After popping: Top element is " << stack.peek() << "\n";
return 0;
}
```
阅读全文