#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef char ElemType;
typedef int Status;
//顺序栈的存储结构
typedef struct {
ElemType *base;
ElemType *top;
int stackSize;
} sqStack;
//栈的初始化
Status InitStack(sqStack *s) {
s->base = new ElemType[MAXSIZE];
if (!s->base) {
exit(OVERFLOW);
}
s->top = s->base;
s->stackSize = MAXSIZE;
return OK;
}
//入栈
Status Push(sqStack *s, ElemType e) {
if (s->top - s->base == s->stackSize) {
return ERROR;
}
*(s->top) = e;
s->top++;
return OK;
}
//出栈
Status Pop(sqStack *s, ElemType *e) {
if (s->top == s->base) {
return ERROR;
}
*e = *--(s->top);
return OK;
}
//返回栈的容量
Status StackLen(sqStack s) {
return (s.top - s.base);
//不是地址的相减而是内容
}
void OutPut(){
ElemType c;
sqStack s;
Status len = 0;
InitStack(&s);
printf("请输入整数,输入#符号表示结束!\n");
scanf("%c", &c);
while (c != '#') {
Push(&s, c);
scanf("%c", &c);
}
//清理键盘缓冲区 回车的ASCII=10
//若用 cin,cout则不用这样
getchar();
len = StackLen(s);
printf("栈的当前容量是:%d\n", len);
}
int main() {
OutPut();
return 0;
}
03.顺序栈的简单案例
最新推荐文章于 2023-10-20 21:42:37 发布