复习过程回顾数据结构
/*顺序栈*/
#include<stdio.h>
#define MaxSize 50 //定义栈中元素的最大个数
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
int top; //栈顶指针,始终指向栈顶元素,初始化为-1
}SqStack;
void InitStack(SqStack *s); //初始化栈
int StackEmpty(SqStack s); //判栈空
int Push(SqStack *s,ElemType e); //进栈
int Pop(SqStack *s, ElemType *e); //出栈
int GetTop(SqStack s, ElemType *e); //读栈顶元素
void main(){
SqStack s;
ElemType a[] = { 1, 2, 3, 4, 5 };
ElemType e;
InitStack(&s);
for (int i = 0; i < 5; i++)
Push(&s, a[i]);
printf("栈中元素出栈:\n");
while (Pop(&s, &e)){
printf("%d ", e);
}
}
void InitStack(SqStack *s){
s->top = -1;
}
int StackEmpty(SqStack s){
if (s.top == -1)
return 1;
else
return 0;
}
int Push(SqStack *s, ElemType e){
if (s->top == MaxSize - 1){ //栈满,报错
printf("栈满,无法继续入栈\n");
return 0;
}
s->data[++s->top] = e; //指针先加1,再入栈
return 1;
}
int Pop(SqStack *s, ElemType *e){
if (s->top == -1){ //栈空,报错
return 0;
}
*e = s->data[s->top--]; //先出栈,指针再减1
return 1;
}
int GetTop(SqStack s, ElemType *e){
if (s.top == -1){ //栈空,报错
printf("栈空\n");
return 0;
}
*e = s.data[s.top];
return 1;
}