练习 栈
来源:互联网 发布:html5 css3 js 教程 编辑:程序博客网 时间:2024/06/05 00:23
参考 http://blog.csdn.net/liujiuxiaoshitou/article/details/53394888
#include<iostream>#include<stdlib.h>#include<stdio.h>#include<math.h>#define ERROR 0#define OK 1#define STACK_INIT_SIZE 2#define STACKINCREMENT 1#define OVERFLOW -2typedef int Status;typedef int SElemType;using namespace std;typedef struct{ SElemType *top; //栈顶指针 SElemType *base; // 栈底指针 int stacksize; //栈大小} SqStack;//构造栈Status initStack(SqStack &S){ S.base=(SElemType * )malloc (STACK_INIT_SIZE*sizeof(SElemType)); //分配STACK_INIT_SIZE*SElemType大小空间 //并且把首地址返回给S.base if(!S.base) // x=0 !x=1 exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;}//销毁栈Status DestoryStack(SqStack &S){ S.top=NULL; S.stacksize=0; free(S.base); //释放空间 S.base=NULL; //将base=NULL防止出现野指针 return OK;}//栈顶插入void Push(SqStack &S){ int e; int q=STACK_INIT_SIZE; int p=STACKINCREMENT; while(cin>>e) { if(S.top-S.base>= q) { S.base=(SElemType *)realloc(S.base,(S.stacksize+p)*sizeof(SElemType)); S.top=S.base+q; S.stacksize=S.stacksize+q; q=q+p; } S.top++; *(S.top-1)=e; }cin>>e;}//遍历栈Status StackTraverse(SqStack S){ if(S.base ==NULL) return ERROR; if(S.top==S.base) cout<<"栈中无元素"<<endl; SElemType *p; p=S.top; while(p>S.base) { p--; cout<<*p; } return OK;}Status StackOutput(SqStack S){ SElemType *head; head=S.base; while(S.base!=S.top) { cout<<*(S.base); S.base++; }S.base=head;}int main(){ SqStack S; initStack(S); Push(S); StackOutput(S); //StackTraverse(S);}
阅读全文
0 0
- 栈练习
- 栈练习
- 练习 栈
- 栈的练习
- 栈的基本练习
- 栈练习一
- 栈的练习
- 栈练习1
- 栈练习2
- 栈练习3
- 栈的练习
- 简单链栈练习
- 1106 栈练习
- 双栈队列练习
- 栈的反转练习
- 双栈排序练习
- 栈练习代码
- 3137 栈练习1
- 图像识别与处理之Opencv——霍夫变换编程思路(11月2日暂存)
- HDU 5253 连接的管道 【最小生成树】
- [2017纪中11-2]救赎 dfs序+树状数组 / 递推
- HttpClient的gradle权限
- Hello
- 练习 栈
- 洛谷 1991 无线通讯网 最小生成树 解题报告
- 2、操作系统的发展与分类
- Fresco加载图片详解
- python3和python2共存于windows
- 使用wireshark常用的过滤命令
- html定位与浮动
- nginx封装的数据结构
- hadoop2.8.2 FS SHELL