数据结构教程(十)栈的表示与实现

来源:www.easyde.net  作者:本站整理
摘要:本课主题:栈的表示与实现 教学目的:栈的数据类型定义、栈的顺序存储表示与实现 教学重点:栈的顺序存储表示与实现方法 教学难点:栈的定义…

typedef struct STACK Sqstack;
Status InitStack(SqStack &S);
Status DestroyStack(SqStack &S);
Status ClearStack(SqStack &S);
Status StackEmpty(SqStack S);
int StackLength(SqStack S);
Status GetTop(SqStack S,SElemType &e);
Status Push(SqStack &S,SElemType e);
Status Pop(SqStack &S,SElemType &e);
Status StackTraverse(SqStack S,Status (*visit)());
Status InitStack(SqStack &S) {
S.base=(SelemType *)malloc(STACK_INIT_SIZE *sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INI_SIZE;
return OK;
}//IniStack

Status DestroyStack(SqStack &S); {
}//DestroyStack

Status ClearStack(SqStack &S); {
S.top=S.base;
} //ClearStack

Status StackEmpty(SqStack S); {
if(S.top==S.base) return TRUE;
else return FALSE;
} //StackEmpty

int StackLength(SqStack S); {
int i; SElemType *p;
i=0;
p=S.top;
while(p!=S.base) {p++; i++; }
} //stackLength

Status GetTop(SqStack S,SElemType &e); {
if(S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
} //GetTop

Status Push(SqStack &S,SElemType e); {
if(S.top - s.base>=S.stacksize) {
S.base=(ElemType *) realloc(S.base,
(S.stacksize + STACKINCREMENT) * sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
} //Push

Status Pop(SqStack &S,SElemType &e); {
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}//Pop

Status StackTraverse(SqStack S,Status (*visit)()); {
}//StackTraverse

以上伪代码的C语言源码

三、总结

栈的定义
栈的顺序存储实现

【相关文章】好搜一下
小方法大作用:如何让网站PR值一路高歌

小方法大作用:如何让网站PR值一路高歌

做网站最痛苦的就是建站之初的那段时间,如长沙厂房出租网站刚建立,只是处于婴幼儿时…