栈的建立与基本操作的算法(C语言实现)

上传人:桔**** 文档编号:486107819 上传时间:2024-03-02 格式:DOC 页数:2 大小:19.01KB
返回 下载 相关 举报
栈的建立与基本操作的算法(C语言实现)_第1页
第1页 / 共2页
栈的建立与基本操作的算法(C语言实现)_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《栈的建立与基本操作的算法(C语言实现)》由会员分享,可在线阅读,更多相关《栈的建立与基本操作的算法(C语言实现)(2页珍藏版)》请在金锄头文库上搜索。

1、栈的建立与基本操作的算法(C语言实现)/* c3-1.h 栈的顺序存储表示 */ #define STACK_INIT_SIZE 10 /* 存储空间初始分配量 */ #define STACKINCREMENT 2 /* 存储空间分配增量 */ typedef struct SqStack SElemType *base; /* 在栈构造之前和销毁之后,base的值为NULL */ SElemType *top; /* 栈顶指针 */ int stacksize; /* 当前已分配的存储空间,以元素为单位 */ SqStack; /* 顺序栈 */* bo3-1.c 顺序栈(存储结构由c3-

2、1.h定义)的基本操作(9个) */ Status InitStack(SqStack *S) /* 构造一个空栈S */ (*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!(*S).base) exit(OVERFLOW); /* 存储分配失败 */ (*S).top=(*S).base; (*S).stacksize=STACK_INIT_SIZE; return OK; Status DestroyStack(SqStack *S) /* 销毁栈S,S不再存在 */ free(*S).base); (

3、*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.t

4、op-S.base; Status GetTop(SqStack S,SElemType *e) /* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR */ if(S.topS.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

5、).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) /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */ if(*S).top=(*S).base) return ERROR;

6、*e=*-(*S).top; return OK; Status StackTraverse(SqStack S,Status(*visit)(SElemType) /* 从栈底到栈顶依次对栈中每个元素调用函数visit()。 */ /* 一旦visit()失败,则操作失败 */ while(S.topS.base) visit(*S.base+); printf(n); return OK; /* main3-1.c 检验bo3-1.cpp的主程序 */#includec1.h typedef int SElemType; /* 定义栈元素类型,此句要在c3-1.h的前面 */ #inclu

7、dec3-1.h #includebo3-1.c Status visit(SElemType c) printf(%d ,c); return OK; void main() int j; SqStack s; SElemType e; if(InitStack(&s)=OK) for(j=1;j=12;j+) Push(&s,j); printf(栈中元素依次为:); StackTraverse(s,visit); Pop(&s,&e); printf(弹出的栈顶元素 e=%dn,e); printf(栈空否:%d(1:空 0:否)n,StackEmpty(s); GetTop(s,&e); printf(栈顶元素 e=%d 栈的长度为%dn,e,StackLength(s); ClearStack(&s); printf(清空栈后,栈空否:%d(1:空 0:否)n,StackEmpty(s); DestroyStack(&s); printf(销毁栈后,s.top=%u s.base=%u s.stacksize=%dn,s.top,s.base, s.stacksize);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号