写一个顺序栈只用stdio.h和iostream头文件不用extern
时间: 2024-05-01 13:19:07 浏览: 100
顺序栈的代码
这个问题有点模糊,请问是指用stdio.h和iostream头文件来实现顺序栈吗?如果是的话,可以参考下面的代码实现:
```c++
#include <stdio.h>
#include <iostream>
#define MAX_SIZE 100 // 定义栈的最大容量
using namespace std;
// 定义顺序栈结构体
typedef struct {
int data[MAX_SIZE]; // 数组作为栈的存储空间
int top; // 栈顶指针
} SeqStack;
// 初始化栈
void InitStack(SeqStack& s) {
s.top = -1; // 栈顶指针初始化为-1
}
// 判断栈是否为空
bool IsEmpty(SeqStack& s) {
return s.top == -1;
}
// 判断栈是否已满
bool IsFull(SeqStack& s) {
return s.top == MAX_SIZE - 1;
}
// 入栈操作
bool Push(SeqStack& s, int x) {
if (IsFull(s)) { // 栈已满,无法入栈
return false;
}
s.data[++s.top] = x; // 栈顶指针先加1,再将x入栈
return true;
}
// 出栈操作
bool Pop(SeqStack& s, int& x) {
if (IsEmpty(s)) { // 栈为空,无法出栈
return false;
}
x = s.data[s.top--]; // 栈顶元素先出栈,再将栈顶指针减1
return true;
}
// 获取栈顶元素
bool GetTop(SeqStack& s, int& x) {
if (IsEmpty(s)) { // 栈为空,无法获取栈顶元素
return false;
}
x = s.data[s.top]; // 直接获取栈顶元素,不影响栈内数据
return true;
}
int main() {
SeqStack s;
InitStack(s);
Push(s, 1);
Push(s, 2);
Push(s, 3);
int x;
GetTop(s, x);
cout << "栈顶元素为:" << x << endl;
Pop(s, x);
cout << "出栈元素为:" << x << endl;
GetTop(s, x);
cout << "栈顶元素为:" << x << endl;
Pop(s, x);
cout << "出栈元素为:" << x << endl;
GetTop(s, x);
cout << "栈顶元素为:" << x << endl;
Pop(s, x);
cout << "出栈元素为:" << x << endl;
if (Pop(s, x)) {
cout << "出栈元素为:" << x << endl;
} else {
cout << "栈已经为空,无法出栈!" << endl;
}
return 0;
}
```
上述代码中使用了stdio.h和iostream头文件,其中stdio.h主要用于输入输出,iostream头文件主要用于cout输出。注意,这里我们没有使用extern关键字,因为extern主要用于在不同的文件之间共享全局变量和函数。而在这个问题中,我们只需要在同一个文件内部实现顺序栈即可。
阅读全文