1.头文件
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MaxSize 50
2.初始化
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];
int top;
}SqStack;
SqStack *p;
p = (SqStack * ) malloc(sizeof(SqStack));
p -> top = -1;
3.销毁栈
void DestroyStack(SqStack * s) {
free(s);
printf("销毁成功\n");
}
4.判空
bool EmptyStack(SqStack * s){
if(s -> top == -1){
printf("栈为空\n");
return false;
} else{
printf("栈不为空\n");
return true;
}
}
5.进栈
bool Push(SqStack *s,ElemType e){
if(s -> top == MaxSize - 1){
printf("栈满\n");
return false;
}
s -> top++;
s -> data[s -> top] = e;
printf("入栈成功\n");
return true;
}
6.出栈
bool Pop(SqStack *s,ElemType e){
if(s -> top == -1){
printf("栈为空\n");
return false;
}
e = s -> data[s -> top];
s -> top--;
printf("出栈成功\n");
return true;
}
7.取栈顶元素
bool GetTop(SqStack *s,ElemType e){
if(s -> top == -1){
printf("栈为空\n");
return false;
}
e = s -> data[s -> top];
printf("栈顶元素是%d\n",e);
return true;
}
8.主函数
int main(){
SqStack *p;
p = (SqStack * ) malloc(sizeof(SqStack));
p -> top = -1;
ElemType x;
Push(p,6);
EmptyStack(p);
GetTop(p,x);
Pop(p,x);
DestroyStack(p);
return 0;
}
疑问:怎么没有输出栈中元素的函数
按一般打印函数编写,输出是一次性的,输出完成后会将数据清空,打印函数实现起来 比较麻烦。况且出栈序列也是一大考点,有其他的考察手段。