#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=0;
printf("该顺序栈已完成初始化\n\n");
return 1;
}
int length(SqStack S){
return(S.top);
}
int isEmpty(SqStack S){
if(S.top==0)
return 1;
else
return 0;
}
int Push(SqStack *S,int e){
if(S->top==MaxSize){
printf("该顺序栈已满 本次入栈操作非法\n\n");
return 0;
}
S->data[S->top++]=e;
printf("本次入栈元素:%d\n\n",e);
return 0;
}
int Pop(SqStack *S,int *e){
if(S->top==0){
printf("该顺序栈为空 本次出栈操作非法\n\n");
return 0;
}
*e=S->data[--S->top];
printf("本次出栈元素:%d\n\n",*e);
return *e;
}
int GetTop(SqStack S){
if(S.top==0){
printf("该顺序栈为空 本次求栈顶操作非法\n\n");
return 0;
}
printf("顺序栈当前栈顶元素为:%d\n\n",S.data[S.top-1]);
return (S.data[S.top-1]);
}
int main(){
SqStack S;
int discard;
InitStack(&S);
Pop(&S,&discard);
if(isEmpty(S))
printf("当前该顺序栈为空\n\n");
else
printf("当前该顺序栈的长度为%d\n\n",length(S));
Push(&S,9);
Push(&S,5);
Push(&S,2);
Push(&S,7);
Push(&S,6);
Push(&S,8);
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);
if(isEmpty(S))
printf("当前该顺序栈为空\n\n");
else
printf("当前该顺序栈的长度为%d\n\n",length(S));
return 0;
}
<数据结构> top指针指向栈顶元素下一位的顺序栈实现(C语言)(第2种/共2种)
最新推荐文章于 2022-09-14 03:31:01 发布