美文网首页
数据结构:栈和队列

数据结构:栈和队列

作者: 喜欢萌妹子的少年 | 来源:发表于2019-03-29 16:34 被阅读0次

栈和队列

栈和队列是软件设计中常用的两种数据结构,逻辑结构和线性表相同。

特点:

栈: "先进后出"
队列:"先进先出"

1.栈的定义及基本运算

栈(Stack)是限制在一端进行插入和删除的线性表。允许插入和删除的一端成为栈顶(Top),另一个固定端成为栈底。当表中没有元素时成为空栈。

栈常见的集中运算:
(1)初始化 Init_Stack(s)

初始条件 :栈(s)不存在。
操作结果:创建一个空栈(s)

(2)判空 Empty_Stack(s)

初始条件:栈(s)已存在
操作结果:若栈(s)为空返回 1,否则返回 0

(3)入栈 Push_Stack(s , x)

初始条件:栈(s)已存在
操作结果:在栈(s)的顶部插入一个新的元素x , x 成为新的栈顶元素。栈发生变化

(4)出栈 Pop_Stack(s)

初始条件:栈(s)存在且非空
操作结果:栈(s)的栈顶元素从栈中移除,栈中减少一个元素,栈发生变化

(5)读取栈顶 Top_Stack(s)

初始条件:栈(s)存在且非空
操作结果:栈顶元素作为结果返回,栈不发生变化

存储结构和基本运算

由于栈是运算受限的线性表,因此线性表的存储结构对栈也是适用的,只是操作不同
(1)顺序栈
定义:利用顺序存储方式实现的栈称为 顺序栈
类似顺序表的定义,栈中的数据元素用一个预设的足够长的一维数组来实现:
datatype data[MAXSIZE],栈底位置可以设置在数组的任意一个端点,而栈顶是随着插入和删除而变化的。通常将 0 下标端设为栈底,这样空栈时栈顶指针top = -1 ; 入栈时,栈顶指针 +1 , 出栈时栈顶指针 -1 。

两点说明:

  1. 对于顺序栈 , 入栈时,首先判断栈是否满了,栈满的条件为 s->top == MAXSIZE -1 , 栈满时,不能入栈,否则会出现控件溢出,引起错误,称为上溢。
  2. 出栈和读取栈顶元素操作, 先判断栈是否为空,为空是不能操作,否则产生错误。通常栈空时常作为一种控制转移的条件。
    (2)链栈

相关文章

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 栈和队列—什么是栈

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

  • 栈和队列—什么是队列

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

  • 队列和栈的应用

    队列和栈的使用 标签(空格分隔): algorithm 队列和栈的应用 1.队列的应用 队列是一种常见的数据结构,...

  • 泡杯茶,我们坐下聊聊javascript事件环

    栈和队列 在计算机内存中存取数据,基本的数据结构分为栈和队列。 栈(Stack)是一种后进先出的数据结构,注意,有...

  • 算法导论 基本数据结构

    MIT公开课没有讲到的内容,介绍几种基本数据结构- 栈和队列- 链表- 二叉树 栈和队列 栈和队列都是动态集合,元...

  • 栈、队列和链表

    基本数据结构 栈和队列 栈和队列都是动态集合。栈实现的是一种后进先出策略。队列是一种先进先出策略。 栈 栈上的in...

  • 数据结构:栈和队列

    栈和队列 栈和队列是软件设计中常用的两种数据结构,逻辑结构和线性表相同。 特点: 栈: "先进后出"队列:"先进先...

  • 数据结构 栈和队列

    数据结构 栈和队列 栈 顺序栈 top = -1 链栈 初始化 判断队空 入队: 头插法 出队: 单链表删除 队列...

  • 第四章栈与队列

    知识大纲 栈和队列的数据结构 相同点 栈和队列都是对删除和插入做了限制的线性表 栈和队列的都是建立在线性表的...

网友评论

      本文标题:数据结构:栈和队列

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