C++ 数据结构与算法----栈的功能实现

1、栈定义

 栈(stack)是限定仅在表的一端进行插入、删除操作的线性表,允许插入和删除的一端称为栈顶(Top),表的另一端被称为栈底(Bottom)。当栈中没有元素时称为空栈。栈的插入操作被形象地称为进栈或入栈,删除操作称为出栈或退栈。

2、栈的特性

先进后出

 

3、栈的结构及实现

3.1顺序栈

 栈作为一种特殊的线性表,在计算机中主要有两种基本的存储结构:顺序存储结构链式存储结构。我们称顺序存储的栈为顺序栈,链式存储的栈为链栈

  顺序栈是顺序存储结构实现的栈,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈,top=maxsize-1为满栈。(maxsize表示最大长度)

顺序栈的存储结构的进栈和出栈过程如下图:

 3.1.2顺序栈的实现

(1)构造函数

SeqStack::SeqStack()
{
    top=-1;
    RSize=maxSize;
    Sstack=new T[RSize];
    if(Sstack==NULL)
    {
    	cout<<"分配内存失败,退出";
    	exit(1);
    }
}

(2)析构函数

SeqStack::~SeqStack()
{
	if(Sstack!=NULL)
    	delete[] Sstack;
}

(3)入栈操作

void SeqStack::push(T x)
{ 
    if(isFull()) 
        overflow();
    Sstack[++top]=x;
}

(4)出栈操作

bool SeqStack::pop(T& x
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值