栈的顺序存储结构——顺序栈 图解和代码实现
2013-03-11 21:59
239 查看
栈的顺序存储结构称为顺序栈
先看下顺序栈的图片:
SeqStack.h
SeqStack.cpp
先看下顺序栈的图片:
SeqStack.h
//SeqStack.h #ifndef SEQSTACK_H #define SEQSTACK_H const int StackSize=10; //10只是示例性的数据,可以根据实际问题具体定义 template <class T> //定义模板类SeqStack class SeqStack { public: SeqStack( ) ; //构造函数,栈的初始化 ~SeqStack( ); //析构函数 void Push(T x); //将元素x入栈 T Pop( ); //将栈顶元素弹出 T GetTop( ); //取栈顶元素(并不删除) bool Empty( ); //判断栈是否为空 private: T data[StackSize]; //存放栈元素的数组 int top; //栈顶指针,指示栈顶元素在数组中的下标 }; #endif
SeqStack.cpp
//SeqStack.cpp #include "SeqStack.h" /* * 前置条件:栈不存在 * 输 入:无 * 功 能:栈的初始化 * 输 出:无 * 后置条件:构造一个空栈 */ template <class T> SeqStack<T>::SeqStack( ) { top=-1; } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:销毁栈 * 输 出:无 * 后置条件:释放栈所占用的存储空间 */ template <class T> SeqStack<T>::~SeqStack( ) { } /* * 前置条件:栈已存在 * 输 入:元素值x * 功 能:在栈顶插入一个元素x * 输 出:如果插入不成功,抛出异常 * 后置条件:如果插入成功,栈顶增加了一个元素 */ template <class T> void SeqStack<T>::Push(T x) { if (top== StackSize-1) throw "上溢"; top++; data[top]=x; } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:删除栈顶元素 * 输 出:如果删除成功,返回被删元素值,否则,抛出异常 * 后置条件:如果删除成功,栈顶减少了一个元素 */ template <class T> T SeqStack<T>::Pop( ) { T x; if (top==-1) throw "下溢"; x=data[top--]; return x; } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:读取当前的栈顶元素 * 输 出:若栈不空,返回当前的栈顶元素值 * 后置条件:栈不变 */ template <class T> T SeqStack<T>::GetTop( ) { if (top!=-1) return data[top]; } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:判断栈是否为空 * 输 出:如果栈为空,返回1,否则,返回0 * 后置条件:栈不变 */ template <class T> bool SeqStack<T>::Empty( ) { if(top==-1) return 1; else return 0; }
相关文章推荐
- 队列的顺序存储结构——循环队列 图解和代码实现
- 栈的顺序存储结构——顺序栈 图解和代码实现
- 队列的顺序存储结构——循环队列 图解和代码实现
- 队列的顺序存储结构——循环队列 图解和代码实现
- 树之二叉树 图解和代码实现
- 常见对象_数组高级冒泡排序原理图解、数组高级冒泡排序代码实现
- js中放大器的图解及实现代码
- 队列的链接存储结构——链队列 图解和代码实现
- 二叉堆建堆的优化算法原理图解及代码实现
- 排序技术_各种算法原理 图解 代码实现
- 图解C#中实现远程调用(Remoting)的示例代码(一)
- 线性表之顺序表 图解和代码实现
- 排序技术_各种算法原理 图解 代码实现
- 排序算法——希尔排序的图解、代码实现以及时间复杂度分析
- 线性表之顺序表 图解和代码实现
- 线性表之单链表 图解和代码实现
- 数据结构之完全二叉树――顺序存储结构(php代码实现)
- 线性表之单链表 图解和代码实现
- PID算法实现及参数整定图解(附代码)
- 链表数据结构图解 和 代码实现