顺序栈——C++实现
2015-10-12 20:35
429 查看
#include<iostream> #include<malloc.h> #define MAXSIZE 50 using namespace std; typedef int DataType; typedef struct{ DataType data[MAXSIZE]; int top; }SeqStack,* PSeqStack; int main(){ //函数声明 PSeqStack Init_SeqStack(void); /*建空栈*/ void Push_SeqStack(PSeqStack S,DataType x); /*入栈*/ void Creat_SeqStack(PSeqStack S); /*建非空栈*/ int Empty_SeqStack(PSeqStack S); /*判断栈是否为空*/ void Pop_SeqStack(PSeqStack S,DataType * y);/*出栈*/ int GetTop_SeqStack(PSeqStack S); /*取栈顶元素*/ void Show_SeqStack(PSeqStack S); /*输出栈*/ void Destroy_SeqStack(PSeqStack * S); /*销毁栈*/ PSeqStack S=Init_SeqStack(); cout<<"创建一个顺序栈,请输入栈元素(最多"<<MAXSIZE<<"个),以负数结束:"; Creat_SeqStack(S); Show_SeqStack(S); int x; cout<<"\n\n请输入要入栈的元素值:"; cin>>x; Push_SeqStack(S,x); Show_SeqStack(S); int y; Pop_SeqStack(S,&y); cout<<"\n\n删除的栈顶元素值为:"<<y<<endl; Show_SeqStack(S); cout<<"\n\n栈顶元素值为:"<<GetTop_SeqStack(S); Destroy_SeqStack(&S); return 0; } /*建空栈*/ PSeqStack Init_SeqStack(void){ PSeqStack S; S=(PSeqStack)malloc(sizeof(SeqStack)); if(S){ S->top = -1;//表示空栈 } return S; } /*入栈*/ void Push_SeqStack(PSeqStack S,DataType x){ if(S->top == MAXSIZE-1){ cout<<"栈满不能入栈!"; }else{ S->top++; S->data[S->top]=x; } } /*建非空栈*/ void Creat_SeqStack(PSeqStack S){ DataType x; while(true){ cin>>x; if(x >= 0) Push_SeqStack(S,x); else break; } } /*判断栈是否为空*/ int Empty_SeqStack(PSeqStack S){ if(S->top == -1) return 1; else return 0; } /*出栈*/ void Pop_SeqStack(PSeqStack S,DataType * y){ if(Empty_SeqStack(S)){ cout<<"栈空不能出栈!"; }else{ * y=S->data[S->top]; S->top--; } } /*取栈顶元素*/ int GetTop_SeqStack(PSeqStack S){ if(Empty_SeqStack(S)){ cout<<"栈空!"; return -1; } return S->data[S->top]; } /*输出栈*/ void Show_SeqStack(PSeqStack S){ cout<<"输出顺序栈为:"; int p=S->top; while(p>= 0){ cout<<S->data[p]<<" "; p--; } } /*销毁栈*/ void Destroy_SeqStack(PSeqStack * S){ if(* S) free(* S); * S=NULL; }
相关文章推荐
- android 代码实现控件之间的间距
- [Android]在代码里运行另一个程序的方法
- 肯特·贝克:改变人生的代码整理魔法
- 网页恶意代码的预防
- 动易2006序列号破解算法公布
- 高手写的Tracer-Flash代码调试类代码下载
- CSS代码缩写技巧
- 非主流Q-zOne代码代码搜集第1/2页
- Ruby实现的矩阵连乘算法
- CreateWeb.vbs 代码
- C#插入法排序算法实例分析
- Lua中编译执行代码相关的函数详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构揭秘一
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题