数据结构_03_栈

一.定义

  • 1.栈(Stack)是限定在一端进行插入和删除的运算的线性表,通常将插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。
  • 2.不含元素的空表称为空栈。
  • 3.因为每次删除(退栈)的总是当前栈中最后插入(进栈)的元素,也就是栈的修改是按着后进先出的原则进行的,因此又称为后进先出的线性表,简称LIFO表。

二.基本操作

  • 1.创建栈:initStack(&S)。
  • 2.空栈判断:stackEmpty(S),空返回true,否则返回false。
  • 3.满栈判断:stackFull(S),满返回true,否则返回false。
  • 4.进栈:又称入栈或插入,push(&S, x),将元素x插入S栈的栈顶。
  • 5.退栈:又称出栈或删除,pop(S),若栈S不为空,则将S的栈顶元素删除,并返回该元素。
  • 6.取栈顶元素:getTop(S),若S不为空,则返回栈顶元素,但不修改栈的桩。

三.存储方式

  • 1.顺序存储结构:

      1.1:栈的顺序存储称为顺序栈,类似于顺序表的定义,顺序栈也是用数组实现的。
      1.2:栈底为数组的第一个元素,位置不变。定义一个top指针指向栈顶的元素位置,随着操作的进行top进行加一或减一操作。
      1.3:顺序栈必须预先分配存储空间(预分配空间可能会产生空间浪费,用多栈共享存储空间方式可解决)。
    
  • 2.链式存储结构

      2.1:栈的链式存储结构称为链栈,它是运算受限的单链表,其插入和删除操作都限制在表头位置上进行,因此不必设置头结点,将单链表的头指针head改为栈顶指针top即可。
    

转载于:https://my.oschina.net/u/128964/blog/1926396

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值