1.实现顺序栈的各种基本运算的算法 编写一个程序sqstack.cpp,实现顺序栈的各种基本运算(假设栈中元素类型ElemType为char)
时间: 2024-12-08 12:20:55 浏览: 39
顺序栈是一种基于数组数据结构的简单线性表,常用于存储和管理数据的一系列操作。下面是一个基本的顺序栈实现,包括初始化、入栈、出栈、查看栈顶元素以及检查栈是否为空的函数。这里以C++为例编写`sqstack.cpp`:
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 100; // 栈的最大容量
class Stack {
private:
char data[MAX_SIZE];
int top; // 栈顶指针
public:
Stack() { top = -1; } // 初始化为空栈
bool isEmpty() const { return top == -1; }
void push(char item) {
if (top >= MAX_SIZE - 1) {
cout << "Stack overflow.\n";
return;
}
data[++top] = item;
}
char pop() {
if (isEmpty()) {
cout << "Stack underflow.\n";
return '\0';
}
return data[top--];
}
char peek() const {
if (isEmpty()) {
cout << "Stack is empty.\n";
return '\0';
}
return data[top];
}
~Stack() {} // 析构函数,这里不需要特殊处理
};
int main() {
Stack s;
// 示例操作
if (!s.isEmpty()) {
cout << "Stack is already initialized.\n";
} else {
s.push('A');
s.push('B');
s.push('C');
cout << "Top element: " << s.peek() << endl; // 输出:Top element: C
cout << "Popped element: " << s.pop() << endl; // 输出:Popped element: C
cout << "After popping: Top element: " << s.peek() << endl; // 输出:After popping: Top element: B
}
return 0;
}
```
在这个实现中,我们使用了`push()`函数将元素添加到栈顶,`pop()`函数移除并返回栈顶元素,`peek()`函数查看但不移除栈顶元素。当试图进行操作但栈为空或已满时,会显示相应的错误信息。
阅读全文