线性表之栈(数据结构day05)

什么是栈

     栈,stack,是限定在表的一端进行插入和删除预算的线性表
  通常,将删除与插入的一端称为栈顶,每次退栈(即删除一个元素)的必是最后一个进栈的元素,而第一个进栈的元素必然是最后一个退栈的。即在栈中,元素具有先进后出,后进先出的特点,故把栈也称为先进后出的线性表,LIFO表(Last in first out).

栈的顺序存储结构
  • 栈的顺序存储也称为顺序栈,是分配一段连续的空间。类似于顺序表的定义,顺序栈也可以通过数组实现。因为栈底是不变的,可以把栈底设为数组的最低端,即下标为0的位置。因为栈顶位置是随着进栈、退栈而动态变化的,故可以设置一个整形变量top标识当前栈顶的位置,通常称top为栈顶指针。
  • 置空栈:top=-1,因为此时栈中无元素,不指向第一个;
  • 判断栈是否为空:top=-1;
  • 判断栈是否为满:top+1=(size)栈的深度;
  • 进栈:栈不满 !!! S[++top]=元素;
  • 出栈:栈不为空 !!! returnS[top–];
  • 取出栈顶: 栈不为空 !!! returnS[stop]
栈的链式存储结构及基本操作
  • 链栈的每个节点的地址是不连续的,只需要一个栈顶指针head即可。将head改为top.链表的头插法就是典型的链栈。由此可知链栈每个节点都包含一个数据域和一个指针域。
  • 判断栈空:top==null;
  • 进栈:申请新节点,将新节点的指针指向旧栈顶的指针域,将top等于新指针,returnS[top]
  • 退栈:栈不为空 !!! 返回栈顶元素,将栈顶指针指向下一个元素返回给top即可。
  • 取栈顶元素:根据top返回即可

注意:

        不论是链栈还是顺序栈入栈时都必须判断栈是否为满,出栈都必须判断栈是否为空!!!
       不论是链栈还是顺序栈入栈时都必须判断栈是否为满,出栈都必须判断栈是否为空!!!
       不论是链栈还是顺序栈入栈时都必须判断栈是否为满,出栈都必须判断栈是否为空!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值