栈的小述

栈的小述
栈是一种重要的线性结构,栈其实就是线性表的一种具体形式。栈是一种后进先出的数据结构。

栈的特性如下:
1)栈是一个后进先出的线性表,它要求只在表尾进行删除和插入的操作。
2)栈顶是这种特殊形式线性表的表尾,栈底是线性表的表头。
3)栈的插入操作(push)称之为进栈、压栈或者入栈。栈的删除操作(pob)称之为出栈或者弹栈。
4)入栈操作要在栈顶进行。每次向栈中压入一个数据,top指针就要加1,直到栈满为止。出栈操作就是从栈顶中取出数据(此时,先把top指针减1,然后取出数据),每当从栈中弹出一个数据,栈的当前容量减1。
5)栈顶的地址是大于栈底。

栈和线性表一样,也同时具有顺序存储结构和链式存储结构。下面给出栈的顺序存储结构:

typedef struct
{
    
    ElemType *base;//栈底指针
    ElemType *top;//栈顶指针
    int stacksize;//栈当前可使用的最大容量
}sqstack;

下面分别给出栈的入栈和出栈的代码

Push(sqstack *s,Elemtype e)
{
    if(s->top - s->base >= s->stacksize)
    {
        s->base = (ElemType*)realloc(s->base,(s->stacksize + INTEV)*izeof(ElemType));
        if(!(s->base)) exit(0);
        s->top = s->base + s->stacksize;
        s->stacksize =  s->stacksize  + INTEV ;
    }
    *(s->top) = e;
    
    (s->top)++;
}

Pob(sqstack *s,Elemtype *e)
{
    if(s->top == s->base)return ;
    *e = *--(s->top);
}














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值