设计一个主函数实现对顺序栈进行操作测试
时间: 2023-03-20 13:08:15 浏览: 172
好的,以下是一个主函数实现对顺序栈进行操作测试的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAXSIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
} SqStack;
// 初始化栈
void InitStack(SqStack *s) {
s->top = -1;
}
// 判断栈是否为空
int StackEmpty(SqStack s) {
return s.top == -1;
}
// 判断栈是否已满
int StackFull(SqStack s) {
return s.top == MAXSIZE - 1;
}
// 入栈操作
int Push(SqStack *s, int x) {
if (StackFull(*s)) {
return ; // 栈已满,入栈失败
}
s->top++;
s->data[s->top] = x;
return 1; // 入栈成功
}
// 出栈操作
int Pop(SqStack *s, int *x) {
if (StackEmpty(*s)) {
return ; // 栈为空,出栈失败
}
*x = s->data[s->top];
s->top--;
return 1; // 出栈成功
}
// 获取栈顶元素
int GetTop(SqStack s, int *x) {
if (StackEmpty(s)) {
return ; // 栈为空,获取栈顶元素失败
}
*x = s.data[s.top];
return 1; // 获取栈顶元素成功
}
int main() {
SqStack s;
int x;
InitStack(&s); // 初始化栈
// 入栈操作
Push(&s, 1);
Push(&s, 2);
Push(&s, 3);
// 出栈操作
Pop(&s, &x);
printf("%d\n", x); // 输出3
Pop(&s, &x);
printf("%d\n", x); // 输出2
// 获取栈顶元素
GetTop(s, &x);
printf("%d\n", x); // 输出1
return ;
}
```
这个示例代码中,我们定义了一个顺序栈的结构体`SqStack`,并实现了初始化栈、判断栈是否为空、判断栈是否已满、入栈、出栈、获取栈顶元素等操作。在主函数中,我们对这些操作进行了测试,以验证它们的正确性。
阅读全文