#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MaxSize 5
typedef struct{
int data[MaxSize];
int top;
}SqStack;
int InitStack(SqStack *S){
S->top=-1;
printf("该顺序栈已完成初始化\n\n");
return 1;
}
int length(SqStack S){
return (S.top+1);
}
int isEmpty(SqStack S){
if(S.top==-1)
return 1;
else
return 0;
}
int Push(SqStack *S,int e){
if(S->top==MaxSize-1){
printf("该顺序栈已满 本次入栈操作非法\n\n");
return 0;
}
S->data[++S->top]=e;
printf("本次入栈元素:%d\n\n",e);
return 1;
}
int Pop(SqStack *S,int *e){
if(S->top==-1){
printf("该顺序栈为空 本次出栈操作非法\n\n");
return 0;
}
(*e)=S->data[S->top--];
printf("本次出栈元素:%d\n\n",*e);
return 1;
}
int GetTop(SqStack S){
if(S.top==-1){
printf("该顺序栈为空 本次求栈顶操作非法\n\n");
return 0;
}
printf("顺序栈当前栈顶元素为:%d\n\n",S.data[S.top]);
return (S.data[S.top]);
}
int main()
{
SqStack S;
int discard;
InitStack(&S);
if(isEmpty(S))
printf("当前该顺序栈为空\n\n");
else
printf("当前该顺序栈的长度为%d\n\n",length(S));
Push(&S,9);
Push(&S,5);
Push(&S,2);
Push(&S,6);
Push(&S,5);
Push(&S,0);
if(isEmpty(S))
printf("当前该顺序栈为空\n\n");
else
printf("当前该顺序栈的长度为%d\n\n",length(S));
Pop(&S,&discard);
if(isEmpty(S))
printf("当前该顺序栈为空\n\n");
else
printf("当前该顺序栈的长度为%d\n\n",length(S));
GetTop(S);
return 0;
}
<数据结构> top指针指向栈顶元素的顺序栈实现(C语言)(第1种/共2种)
于 2022-06-27 22:48:03 首次发布