21-顺序栈的基本运算实现

  1. 初始化栈initStack(&s)

    建立一个新的空栈s,实际上是将栈顶指针指向-1即可

这里写图片描述

void InitStack(SqStack *&s)
{
    //分配栈的存储空间
    s=(SqStack *)malloc(sizeof(SqStack));
    //标记为栈空
    s->top=-1;
}

2.销毁栈ClearStack(&s)

   释放栈s占用的存储空间

这里写图片描述

void DestroyStack(SqStack *&s)
{   //释放栈的空间
    free(s);
}

3.判断栈是否为空StackEmpty(s)

   在判断栈是否为空时,我们只需关注栈S为空的条件s->top==-1。

这里写图片描述

bool StackEmpty(SqStack *s)
{
    return(s->top==-1);
}

4.进栈Push(&s,e)

  在进行进栈操作时,应该先判断栈是否满了,栈满的条件为top下标等于MaxSize-1,如果栈不满则可以进栈,也就是说进栈时,栈必须要有足够的空间。

  元素a进栈操作如下图所示,第一步先将top下标加1,然后元素a进栈,元素b,c,d依次进栈。

这里写图片描述

bool Push(SqStack *&s,ElemType e)
{
    //栈是否满了
    if (s->top==MaxSize-1)
        return false;
    //进栈操作,先将top+1,然后元素e进栈
    s->top++;
    s->data[s->top]=e;
    return true;
}

5.出栈Pop(&s,&e)

  对于出栈操作同理,先判断栈是否为空(栈空条件为top下标等于-1),栈为空的话就没必要出栈了,如果栈不为空则可以进行出栈。

  元素d出栈操作如下图所示,第一步先元素d出栈,然后将top下标减1。

这里写图片描述

bool Pop(SqStack *&s,ElemType &e)
{
    if (s->top==-1)
        return false;
    e=s->data[s->top];
    s->top--;
    return true;
}

6.取栈顶元素GetTop(s,e)

  对于去栈顶元素也是出栈操作,也需要判断栈是否为空

这里写图片描述

bool GetTop(SqStack *s,ElemType &e)
{
    if (s->top==-1)
        return false;
    e=s->data[s->top];
    return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值