c++顺序栈的实现
来源:互联网 发布:java telnet 编辑:程序博客网 时间:2024/06/05 16:16
#include<stdio.h>#include<stdlib.h>#include <malloc.h>#include <iostream.h>#define Status int#define STACK_INIT_SIZE 100#define ERROR 0#define OK 1#define TRUE 1#define FALSE 0typedef struct{int *base,*top;int stackSize;}Stack;//初始化栈Status initStack(Stack &s){s.base = (int *)malloc(STACK_INIT_SIZE*(sizeof(int)));if (!s.base)return ERROR;elses.top = s.base;s.stackSize = STACK_INIT_SIZE;}Status destoryStack(Stack &s){//销毁栈s.top = s.base;free(s.base);s.base = NULL;s.top = NULL;return OK;}bool isEmpty(Stack s){if (s.base == s.top)return TRUE;elsereturn FALSE;}int stackLenght(Stack s){//栈中元素个数if (s.base == s.top)return ERROR;elsereturn s.top - s.base;}int getTop(Stack s){//获取栈顶元素if (s.base == s.top){cout << "stack is empty" << endl;return 0;}else{s.top--;return *s.top;}}Status push(Stack &s,int e){//元素入栈if (stackLenght(s) == STACK_INIT_SIZE){cout << "stack is full" << endl;return ERROR;}else{*(s.top) = e;s.top++;return OK;}}int pop(Stack &s){//元素出栈if (isEmpty(s)){cout << "stack if empty" << endl;return 0;}else{s.top--;return *(s.top);}}Status clearStack(Stack &s){//置空栈s.top = s.base;s.stackSize = 0;return OK;}void displayStack(Stack s){//打印栈if (isEmpty(s))exit(-1);else{while (s.top != s.base){--s.top;cout << *(s.top) << endl;}}}int main(int argc, char* argv[]){Stack s;initStack(s);for (int i = 0; i < 5; i++){if (push(s, i))cout << i << "is push in stack successful!" << endl;elsecout << "there is a error" << endl;}displayStack(s);int top = getTop(s);cout << top << endl;return 0;}
出现的问题:
开始时栈的定义前没有用typedef,后面的函数对栈的引用都会出现问题。
0 0
- 顺序栈的实现 c
- 顺序栈的C实现
- c实现顺序栈
- c实现顺序栈
- 顺序栈的C语言实现
- 顺序栈的实现(C语言)
- 顺序栈的C语言实现
- 顺序栈的实现(ANSI C)
- 数据结构的C实现_顺序栈
- 顺序栈的实现C语言
- 顺序栈的实现(C语言)
- 顺序栈的C语言实现
- <数据结构>顺序栈的C语言实现
- 顺序栈的C语言实现
- 动态顺序栈的C语言实现!
- 顺序栈的实现(C语言)
- 顺序栈的c语言实现
- 【数据结构】顺序栈的实现(c++)
- 【c++】实现一个函数重载
- 黑马程序员-----java----多线程
- Android笔记之使用LayoutInflater创建View
- mongodb条件查询实现结构化查询语句SQL
- iOS app 'The application could not be verified' only on one device
- c++顺序栈的实现
- android 线程池的实现方式
- OpenFire源码学习之十五:插件开发
- 图片缩放时java.lang.IllegalArgumentException: pointerIndex out of range
- 面试小结-那些求职路上的经验分享与感受
- 字符串的一些算法
- oracle数据库使用dgbroker搭建DG以及一些常见的小问题
- Hduoj2112【字典树+迪杰斯特拉】
- OpenCV: 寻找图像轮廓并绘制