编写一个程序,实现顺序栈的各种基本运算。
2013-11-14 16:25
1091 查看
完成如下功能:
(1)初始化栈s;
(2)判断栈s是否非空;
(3)依次进栈元素a,b,c,d,e
(4)判断栈s是否非空;
(5)输出栈长度;
(6)输出从栈顶到栈底元素;
(7)输出出栈序列;
(8)判断栈s是否非空;
(9)释放栈。
代码:
(1)初始化栈s;
(2)判断栈s是否非空;
(3)依次进栈元素a,b,c,d,e
(4)判断栈s是否非空;
(5)输出栈长度;
(6)输出从栈顶到栈底元素;
(7)输出出栈序列;
(8)判断栈s是否非空;
(9)释放栈。
代码:
#include"iostream" #include"malloc.h" using namespace std; #define MaxSize 50 typedef struct{ char data[MaxSize]; int top; }SqStack; void InitStack(SqStack *&s){ s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; } bool StackEmpty(SqStack *s){ return(s->top==-1); } bool Push(SqStack *&s,char e){ if(s->top==MaxSize-1) return false; s->top++; s->data[s->top]=e; return true; } int StackLength(SqStack *s){ return (s->top+1); } bool Pop(SqStack *s){ int i; i=s->top; if(s->top==-1) return false; else{ for(;s->top!=-1;s->top--) { cout << s->data[s->top] << " " ; } s->top=i; cout << endl; return true; } } bool Get(SqStack *&s){ if(s->top==-1) return false; else{ for(;s->top!=-1;s->top--) { cout << s->data[s->top] << " " ; } cout << endl; return true; } } void DestroyStack(SqStack* &s){ free(s); } void main() { SqStack* s; InitStack(s); cout << StackEmpty(s) << endl; Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); cout << StackEmpty(s) << endl; cout << StackLength(s) << endl; Pop(s); Get(s); cout << StackEmpty(s) << endl; DestroyStack(s); }
相关文章推荐
- Linux文件系统
- webkit.net开发时的注意事项
- MyEclipse6.0编译后的类无法自动发不到WebRoot/WEB-INF/classes文件夹下(转)
- HTML5 新增标签兼容处理
- MakeFile编写
- Fragment与FragmentAcitvity间的传值
- VC 如何使程序运行后自己删除自己
- Day Tips:分布式缓存的删除和重建
- 常用开源代码网站集合
- 关于Invalidate、InvalidateRect和UpdateWindow
- Python特殊语法:filter、map、reduce、lambda
- 页面禁用 鼠标右键
- 页面加载Loading
- C++限定只能栈创建对象,只能堆创建对象。
- spring碎碎念(二)
- linux中常用的头文件
- Sd - 数据库开发调优
- border:none与border:0使用区别
- oracle sqlserver mysql随机行
- 不让自己的应用程序在桌面的图标列表里启动显示的方法