首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

栈的顺序存储构造——顺序栈 图解和代码实现

2013-03-14 
栈的顺序存储结构——顺序栈图解和代码实现栈的顺序存储结构称为顺序栈 先看下顺序栈的图片: SeqStack.h//Se

栈的顺序存储结构——顺序栈 图解和代码实现

栈的顺序存储结构称为顺序栈

 

先看下顺序栈的图片:

栈的顺序存储构造——顺序栈  图解和代码实现


 

SeqStack.h

//SeqStack.h#ifndef SEQSTACK_H#define SEQSTACK_Hconst int StackSize=10;  //10只是示例性的数据,可以根据实际问题具体定义template <class T>       //定义模板类SeqStackclass 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;} 



热点排行