定义:限定只在表的一端(表尾)进行插入和删除操作的线性表

特点:FILO,LIFO

栈顶(top):允许插入和删除的一端

栈底(bottom):另一端

问题:

进出栈的顺序

求栈的容量

栈中元素实际个数

操作:

元素进栈

元素出栈

初始化

判空

判满


顺序栈

限定在表尾进行插入和删除操作的顺序表

类型定义:

typedef struct{
    SElemType *base;
    SElemtype *top;
    int stacksize;
    }SqStack;
SqStack s;

说明:

  • base称为栈底指针,始终指向栈底。当base=null时,表明栈结构不存在
  • top为栈顶指针
  • stacksize:当前栈可以使用的最大容量

判断:

栈空:s.top=s.base

栈满条件:s.top-s.base>=s.stacksize

进栈操作:*s.top++=e; 或*stop=e; s.top++;

退栈操作:e=*--s.top; 或s.top--;e=*s.top;

上溢:栈满时再做进栈操作产生空间溢出

下溢:栈空时再做退栈操作产生空间溢出


链栈


不带头结点的单链表,其插入和删除操作仅限制在表头位置上进行,链表的头指针即栈顶指针。

类型定义:

typedef struct SNode{
    SElemType data;
    struct SNode *next;
    }SNode,*LinkStack;
LinkStack s;

栈的应用

数制转换

表达式求值


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值