栈的顺序存储结构——顺序栈 图解和代码实现
2014-11-18 10:12
489 查看
栈的顺序存储结构称为顺序栈
先看下顺序栈的图片:
SeqStack.h
[cpp]
view plaincopy
//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
[cpp]
view plaincopy
//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;
}
相关文章推荐
- 线性表之顺序表 图解和代码实现
- 队列的顺序存储结构——循环队列 图解和代码实现
- 队列的顺序存储结构——循环队列 图解和代码实现
- 队列的顺序存储结构——循环队列 图解和代码实现
- 栈的顺序存储结构——顺序栈 图解和代码实现
- 《数据结构》线性表:顺序存储结构(顺序表的)实现示例代码
- 线性表之顺序表 图解和代码实现
- 线性结构的顺序存储和链式存储的实现代码(二)
- STL之顺序容器适配器(栈的链表实现代码)
- 批量获取memcache值并按key的顺序返回的实现代码
- 线性表的顺序存储结构之顺序表类的实现_Java
- 二叉树用顺序表实现 C++代码实现
- 队列的链接存储结构——链队列 图解和代码实现
- 严蔚敏--线性表的顺序表示和实现 代码
- 三个Java多线程循环顺序周期打印1-75个数(用CyclicBarrier实现代码)
- 栈的链接存储结构--链栈 图解和代码实现
- STL之顺序容器适配器(栈的数组实现代码)
- 顺序栈的定义、初始化、出栈、入栈等操作 C++代码实现
- 图解C#中实现远程调用(Remoting)的示例代码(一)
- 严蔚敏-- 顺序栈的代码实现