1.编写一个名为sqstack.cpp的程序,实现顺序栈的各种基本运算(假设顺序栈的元素类型为int),并在此基础上设计一个主函数,完成如下功能: (1).初始化顺序栈S (2).创建栈(栈中元素个数
时间: 2024-12-06 13:23:33 浏览: 21
顺序栈的实现.zip
5星 · 资源好评率100%
首先,我们来了解一下如何编写一个名为`sqstack.cpp`的简单顺序栈(也称为数组栈)程序,它包含基本的构造、入栈(push)、出栈(pop)、查看顶部元素(top)、判断栈是否为空(empty)以及检查栈是否已满等操作。这里我们使用C++语言来实现:
```cpp
#include <iostream>
using namespace std;
// 定义顺序栈结构体
struct Stack {
int* data; // 存储元素的数组
int top; // 栈顶指针
int capacity; // 栈的最大容量
// 构造函数,初始化栈
Stack(int size) : data(new int[size]), top(0), capacity(size) {}
// 插入元素到栈顶
void push(int value) {
if (top == capacity) {
cout << "Stack is full.\n";
return;
}
data[top++] = value;
}
// 删除栈顶元素并返回值
int pop() {
if (empty()) {
cout << "Stack is empty.\n";
return -1;
}
int value = data[top - 1];
data[top - 1] = 0; // 简单处理删除后的空位,实际应用中可以保留
top--;
return value;
}
// 查看栈顶元素但不删除
int peek() const {
if (empty()) {
cout << "Stack is empty.\n";
return -1;
}
return data[top - 1];
}
// 判断栈是否为空
bool empty() const {
return top == 0;
}
// 释放内存
~Stack() {
delete[] data;
}
};
// 主函数
int main() {
Stack s(5); // 初始化一个大小为5的栈
// (1).初始化顺序栈S
cout << "Stack S initialized with capacity of " << s.capacity << " elements.\n";
// 示例操作
s.push(10);
s.push(20);
s.push(30);
// (2).创建栈,并操作
cout << "Pushing elements into the stack:\n";
cout << "Top element: " << s.peek() << endl;
int poppedValue;
poppedValue = s.pop();
cout << "Popped element: " << poppedValue << ", New top: " << s.peek() << endl;
// 检查栈状态
cout << "Is stack empty? " << (s.empty() ? "Yes" : "No") << endl;
cout << "Is stack full? " << (s.top == s.capacity ? "Yes" : "No") << endl;
return 0;
}
```
在这个示例中,我们首先创建了一个大小为5的顺序栈,然后演示了栈的基本操作。注意,这个实现并没有处理所有可能的错误情况,例如栈满后尝试插入元素和空栈时试图获取栈顶元素。
阅读全文