栈操作包括入栈,出栈,清空栈,销毁栈等
来源:互联网 发布:双色球数据库分析 编辑:程序博客网 时间:2024/06/06 02:41
#include<malloc.h>#include<string.h>#include<stdio.h>#define OVERFLOW -1#define STACK_INIT_SIZE 10#define STACKINCREMENT 2#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int SElemType;typedef int Status; struct SqStack{SElemType *base;SElemType *top;int stacksize;};Status InitStack(SqStack &S);Status DestoryStack(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(SElemType));if(!S.base) return OVERFLOW;S.top = S.base;S.stacksize = STACK_INIT_SIZE;return OK;}Status DestoryStack(SqStack &S){free(S.base);S.base = NULL;S.top = NULL;S.stacksize = 0;return OK;}Status ClearStack(SqStack &S){S.top = S.base;return OK;}Status StackEmpty(SqStack S){if(S.top == S.base)return TRUE;elsereturn FALSE;}int StackLength(SqStack S){return S.top - S.base;}Status GetTop(SqStack S,SElemType &e){if(S.top == S.base) return ERROR;e = *(S.top -1);return OK;}Status Push(SqStack &S, SElemType e){if(S.top - S.base >= S.stacksize){S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT)*sizeof(SElemType));if(!S.base) return OVERFLOW;S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT; }*S.top++ = e;return OK;}Status Pop(SqStack &S, SElemType &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;}Status visit(SElemType e){printf("%d ", e);return OK;}int main(){SElemType 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=%d\n", e);printf("栈空否:%d(1:是 0:否)\n", StackEmpty(s));GetTop(s, e);printf("栈顶元素 e=%d 栈的长度为%d\n", e, StackLength(s));ClearStack(s);printf("清栈后,栈空否:%d(1:空 0:否)\n",StackEmpty(s));DestoryStack(s);printf("销毁栈后,s.top = %u s.base= %u s.stacksize=%d\n",s.top,s.base,s.stacksize);return 0;}
运行结果如下:
- 栈操作包括入栈,出栈,清空栈,销毁栈等
- [数据结构]c语言实现链栈的入栈,出栈,清空,销毁等操作
- [数据结构]c语言实现顺序栈的入栈,出栈,清空,销毁等操作
- 栈的基本操作模板类,包括栈的压入,出栈,删除栈顶元素,清空栈等操作
- Java 用数组实现栈 (Stack),包括栈的初始化,入栈、出栈等操作
- 数据结构栈的基本操作(创建、入栈、出栈、销毁)
- 栈的入栈/出栈操作
- C++栈的初始化,入栈,出栈,获取栈顶元素等操作
- 链栈的定义、初始化、出栈、入栈等操作
- 顺序栈的定义、初始化、出栈、入栈等操作 C++代码实现
- 2.1.1线性表实现栈的建立,入栈,出栈等操作
- 两个队列实现一个栈,并实现入栈、出栈、取栈顶等相关操作
- 数据结构顺序栈的创建、初始化、出栈、入栈及销毁
- 数据结构之栈的初始化、创建、入栈、出栈、销毁-c++代码实现
- 堆栈顺序实现入栈和出栈等(C)
- 数据结构栈的数组实现初始化,入栈,出栈,获取栈顶元素,栈的长度等操作
- 顺序栈的定义、初始化、出栈、入栈等操作 C++代码实现 ——感想
- 编程实现栈的入栈与出栈操作
- 掌握Java的标准
- LDD3读书笔记(第14章 tty设备驱动)
- jQuery选择器大全(48个代码片段+21幅图演示)
- 深入理解Hadoop集群和网络
- mysql文件导入总结
- 栈操作包括入栈,出栈,清空栈,销毁栈等
- 关闭Zend Framework模板自动分发
- C#学习笔记----第三周(数组、递归、对象)(1)
- 十道海量数据处理面试题与十个方法大总结
- Oracle 11g启动报ORA-28056、OS 1502错误
- QT里的函数void Q_INIT_RESOURCE ( name )
- Android原创游戏之“诈金花”(一)
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 消除使用activityGroup时, 子Activity的上黑边框