顺序栈
来源:互联网 发布:浏览器兼容性测试软件 编辑:程序博客网 时间:2024/05/02 08:17
栈的顺序实现方法
template<class T>class stack{public: void Clear(); //清空栈 bool Push(const T item);//栈的压入操作 bool Pop(T & item);//读取栈顶元素的值并删除 bool Top(T & item);//读取栈顶的元素色值不删除 bool isEmpty();//判断栈是否为空 bool isFull();//判断栈是否已满};template <class T>class ArrayStack:public stack<T>{private: int maxSize;//栈的最大值 int top;//栈顶的位置 T *st;//存放栈的数组public: ArrayStack(int size)//创建一个给定长度的栈 { maxSize=size; top=-1; st=new T[maxSize]; } ArrayStack()//创建一个为给定长度的栈 { top=-1; } ~ArrayStack()//析构函数 { delete[]st; } void Clear()//清空栈的内容 { top=-1; } bool Push(const T item)//入栈操作 { if(top==maxSize-1) cout<<"栈满溢出"<<endl; return false; else { st[++top]=item;//入栈,改变栈顶指针 return true; } } bool Pop(T&item)//出栈操作 { if(top==-1) { cout<"栈为空,不能进行删除操作"<<endl; return false; } else { item=st[top--];//读取栈顶元素,并修改栈顶指针 return true; } } bool Top(T &item)//读取栈顶元素,但不删除 { if(top==-1) { cout<<"栈为空,无数据"<<endl; return false; } else { item=st[top]; return true; } }};
当入栈操作遇到栈满的情况时可用动态数组扩大栈的容量
template <class T>bool ArrayStack::push(const T item){ if(top==maxsize-1) { T*newSt=new T [maxsize*2]; for(int i=0;i<maxsize;i++) newSt[i]=St[i]; delete[]St; st=newSt; maxsize*=2; st[++top]=item; return true; } else { st[++top]=item; return true; }}
0 0
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- Nginx配置文件详细说明
- 打包ipa
- 函数局部变量
- ecshop二次开发: Only variables should be passed by reference in的解决
- 什么是Oracle Past Image(pi)
- 顺序栈
- C++“准”标准库Boost学习指南-variant的使用
- 基于.NET实现淘宝发布宝贝功能(四)
- 我为什么不写技术上的问题
- H.264-AVC视频编码原理及实现
- java IO流(字节流与字符流对文件的处理)
- 图片裁剪工具类
- hdu 5363 Key Set 简单题
- Android学习笔记