栈的基本操作【严蔚敏】
来源:互联网 发布:淘宝分销发货 编辑:程序博客网 时间:2024/06/04 18:53
typedef struct SqStack { SElemType *base; /* 在栈构造之前和销毁之后,base的值为NULL */ SElemType *top; /* 栈顶指针 */ int stacksize; /* 当前已分配的存储空间,以元素为单位 */ }SqStack; /* 顺序栈 */
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); (*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返回S的栈顶元素,并返回OK;否则返回ERROR */ 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) { /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */ if((*S).top==(*S).base) return ERROR; *e=*--(*S).top; return OK; }
Status StackTraverse(SqStack S,Status(*visit)(SElemType)) { /* 从栈底到栈顶依次对栈中每个元素调用函数visit()。 */ /* 一旦visit()失败,则操作失败 */ while(S.top>S.base) visit(*S.base++); printf("/n"); return OK; }
0 0
- 栈的基本操作【严蔚敏】
- 栈的基本操作
- 栈的基本操作
- 栈 的基本操作。
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- C++虚函数与多态性
- 在Fragment中点击按钮关闭当前的Fragment返回上一个Fragment该如何实现
- 关于ssm框架加入json的注意的问题
- Nginx+Keepalived实现站点高可用
- bzoj1306: [CQOI2009]match循环赛
- 栈的基本操作【严蔚敏】
- 隐含强制类型转换——从变量说起
- JDK8 从永久代到元空间
- 在ubuntu 16.04上安装jdk
- Nginx配置ssl加密(单双向认证、部分https)
- 线程中断
- GetFileAttributes详解
- openCV编程思想总结(1)
- RecyclerView 加载图片不显示问题