frankzfz
全部博文(252)
2022年(12)
2017年(11)
2016年(7)
2015年(14)
2014年(20)
2012年(9)
2011年(20)
2010年(153)
2009年(6)
执着的KK
TM.
urgel_ba
可怜的猪
jurson
来点甜
cetcnav
max_3
zxszcaij
odessy
btrace
酷小川11
Victorzd
powertre
km康蒙92
simon_qi
天翼云开
BugMan
分类: C/C++
2010-07-31 14:09:15
typedef struct Stack { SElemType *base; SElemType *top ; int stacksize; }SqStack;
Status InitStack(SqStack *S) {//构造一个空栈 if(!(S->base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)))) exit(OVERFLOW); S->top = S->base; S->stacksize = STACK_INIT_SIZE; return OK; } Status DestroyStack(SqStack S) {//销毁栈S free(S.base); S.base = NULL; S.top = NULL; S.stacksize = 0; return OK; } Status ClearStack(SqStack S) {//把栈S置空 S.top = S.base; return OK; } Status StackEmpty(SqStack S) {//若栈S为空,则返回TRUE,否则返回FALSE if(S.top == S.base) return TRUE; else return FALSE; } int StackLength(SqStack S) {//返回S的元素个数,也就是栈的长度 return S.top - S.base; } Status GetTop(SqStack S,SElemType *e) {//用e返回栈顶元素 if(S.top > S.base) { *e = *(S.top -1); return OK; } else return ERROR; } Status Push(SqStack *S,SElemType e) {//插入元素e为栈顶元素 if(S->top - S->base >=S->stacksize) { S->base=(SElemType *)realloc(S->base,(S->stacksize + STACKINCREMENT) * sizeof(SElemType)); if(!S->base) exit(OVERFLOW); S->top = S->base + S->stacksize; S->stacksize +=STACKINCREMENT; } *(S->top)++=e; return OK; } Status Pop(SqStack *S,SElemType *e) {//删除栈顶元素,用e返回其值 if(S->top == S->base) return ERROR; *e = *--S->top; return OK; } Status StackTraverse(SqStack S,Status(*visit)(SElemType)) {// 输出栈顶元素 while(S.top > S.base) visit(*S.base++); printf("\n"); return OK; }
上一篇:队列的操作的C语言实现
下一篇:二叉树各种操作的C语言实现(-)
登录 注册