数据结构(三):栈

作者: 聪明的奇瑞 | 来源:发表于2018-02-11 16:00 被阅读52次

栈概念

  • 栈是仅在表尾(栈顶)进行插入和删除操作的线性表,是后进先出的线性表,简称 LIFO 结构,不含任何元素的栈称为空栈
  • 栈的插入操作也叫做进栈,栈的删除操作也叫做出栈
yQOsp.png

栈(stack)的抽象

  • Data(数据元素):同线性表,元素具有相同的类型,相邻元素具有前驱和后继关系
  • 基本操作
方法 描述
InitStack(*S) 初始化操作,建立一个空栈 S
DestoryStack(*S) 销毁一个栈
ClearStack(*S) 清空栈
StackEmpty(S) 若栈为空,返回true,否则false
GetTop(S,*e) 若栈存在且非空,返回 S 的栈顶元素
Push(*S,e) 插入新元素 e 到栈 s 中并成为栈顶元素
Pop(S,e) 删除栈 s 中的顶元素,返回其值
StackLength(S) 返回栈 S 元素个数

栈的链式存储结构

  • 将栈顶放在链表的头部
  • 对于链表来说基本不存在栈满情况,除非没有内存可以使用

栈的进栈 push 与出栈 pop

  • 进出栈操作都很简单,没有任何循环操作,时间复杂度为 O(1)
  • 顺序栈与链表栈的区别是顺序栈需要确定长度,可能会存在内存空间浪费问题,但优势是存取定位方便,而链表栈每个元素都有指针域,会增加一点内存开销,但栈长度无限制

最先进栈的一定最后出栈?

  • 最先进栈的不一定最后出栈,如有3个整形数字元素1、2、3依次进栈,会有以下几个出栈顺序:
    • 第一种:1、2、3 进,再 3、2、1 出,出栈顺序为 321
    • 第二种:1进,1出,2进,2出,3进,3出,出栈顺序为 123
    • 第三种:1进、2进,2出,1出,3进,3出,出栈顺序为 213
    • 第四种:1进,1出,2进,3进,3出,2出,出栈顺序为 132
    • 第五种:1进、2进、2出、3进、3出,1出,出栈顺序为 231

相关文章

  • 栈和队列

    1、栈 栈是一种先进先出的数据结构。栈顶进栈,栈顶出栈。 数据结构 栈的初始化 进栈 出栈 栈的最小值 2、队列 ...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

  • java高级知识点

    1.数据结构 程序=数据结构+算法 栈:后进先出,线性结构 入栈:push 出栈:pop假如已知入栈顺序是ab...

  • 栈和堆以及栈区和堆区的区别

    栈和堆以及栈区和堆区的区别 数据结构中的栈和堆 栈:具有先进后出性质的数据结构 堆:一种经过排序的树形数据结构,节...

  • 数据结构与算法 第二节:栈 栈: 一种先进后出的数据结构。可以想象成手枪的弹夹。 栈的特点: 栈的行为: 栈的代...

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 什么是堆栈?

    堆与栈是两种数据结构,并不是一种数据结构,堆是堆,栈是栈。 1、栈:是一种只能在一端进行插入和删除的数据结构。 允...

  • 05--栈 递归

    栈 栈(Stack)又名堆栈,它是一种重要的数据结构。从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线...

  • 18-04-21 python3 算法笔记 002基本数据结构

    线性数据结构 栈,队列,deques,列表其元素在数据结构中的位置由它被添加时的顺序决定。 栈 后进先出栈 LI...

  • 数据结构

    数据结构:要写!!手动!!数据结构非常简洁才可 栈 eg. 弹栈压栈的过程 链表 就是原型链不断的连接,要断去某个...

网友评论

    本文标题:数据结构(三):栈

    本文链接:https://www.haomeiwen.com/subject/edzktftx.html