数据结构顺序栈浅见<C语言实现>

live long and prosper.

本内容参考《数据结构教程》李春葆
##顺序表
作为线性表的一种,在应用简单的顺序表结构具有一定的优势,下面来浅显的看一下使用顺序表是如何实现的。
顺序栈:使用顺序存储结构的栈。
1.声明栈的类型:

typedef struct
{
    int data[5];
    int top;
}Sqstack;

在上面的代码中,将int类型为例,在实际的应用中可以使用其它数据类型。这里我们也将使用栈指针的方式创建和使用顺序栈。同时顺序表节点的数量可以自定义,这里定为5.
另外注意,在顺序栈中,除了要为栈预留存储空间,还要为栈指针预留空间。
2.初始化顺序栈
初始化时,要为栈创建空间,向创建一个空栈,s指向它,同时s->top=-1,0以后的空间则为顺序表存储数值

void initStack(Sqstack*&s)
{
    s=(Sqstack*)malloc(sizeof(Sqstack));
    s->top=-1;
}

3.销毁顺序栈

void destroyStack(Sqstack*&s)
{
    free(s);
}

4.判断栈是否为空

bool Stackempty(Sqstack*&s)
{
    return (s->top==-1);
}

5.进栈
进栈首先判断栈是否已满,如果未满,将栈顶指针加一,然后在指针指向的位置插入需要添加的元素,并返回为真;否则返回假.

bool Push(Sqstack*&s,int e)
{
    if(s->top==4)
        return false;
    s->top++;
    s->data[s->top]=e;
    return true;
}

5.出栈
该过程中,在栈不为空的情况下,将栈顶元素赋给额,然后栈顶指针减一,并返回为真,否则假。

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

6.取栈顶元素
在栈不为空的情况下,将栈顶元素赋给e,并返回真,否则假。

bool getTop(Sqstack*&s,int e)
{
    if(s->top==-1)
        return false;
    e=s->data[s->top];
    return true;
}

下面总结一下在顺序栈运算过程中的一些基本小算法;
·判断栈空的条件:s->top==-1;
·判断栈满的条件:s->top==MAXSIZE-1;(maxsize为顺序表数据域的大小)
·进栈操作:先将栈顶指针加一,在将值赋给栈顶指针所在位置
·出栈操作:先将栈顶元素赋给e,然后将栈顶指针减一
·进栈操作:先将栈顶指针加一,在将值赋给栈顶指针所在位置
·出栈操作:先将栈顶元素赋给e,然后将栈顶指针减一

如有错误,欢迎斧正

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值