赞
踩
#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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。