数据结构——名词解释(三)

第三章 栈和队列

1、栈的定义:栈是操作受限的线性表,只能在一端进行插入或删除操作。

  • 栈的特性:先进后出。
  • 栈顶:是线性表中允许进行插入、删除操作的一端。
  • 栈底:是线性表中不允许进行插入、删除操作的一端。
  • 空栈:不含任何元素的空表。
  • 进栈(入栈):栈的插入操作。
  • 出栈(退栈):栈的删除操作。
  • 栈,又可以分为顺序栈、共享栈和链栈
    1)顺序栈:采用顺序存储的栈。即分配一块连续的存储区域来存放栈中的元素,并用一个指针(top)指向栈顶元素的存储位置。
    2)共享栈(属于顺序栈的范畴):是由两个顺序栈共享一个一维数组空间。将两个栈的栈底分别设置在一维数组的两端;两个栈顶向共享空间的中间延伸。(提高了存储空间利用率)
    3)链式栈:采用链式存储的栈。是通过不连续的存储空间来存储栈中的元素。其优点是:不存在栈满的情况,所有的操作都是在链表的表头进行操作的。

2、队列的定义:队列也是操作受限的线性表,只能在表的一端进行插入,在表的另一端进行删除。

  • 队列的特性:先进先出。
  • 入队(进队):向队列中插入元素的操作。
  • 出队(离队):向队列中删除元素的操作。
  • 队尾(rear):允许插入元素的一端。
  • 队头(front,队首):允许删除元素的一端。
  • 空队列:不含任何元素的空表。
  • 队列,又可分为:顺序存储的队列(顺序队)、链式存储的队列(链队)、循环队列(属于顺序队列的范畴)、双端队列(受操作影响的队列)。
    1)顺序队:采用顺序存储的队列,即分配一块连续的存储空间来存储队列中元素,并用两个指针(rear指针和front指针)分别指向队尾和队首。
    判断非循环队列队空的条件:Q.rear==Q.front;队满的条件:Q.rear=Maxsize-1

    2)循环队列:是为了解决顺序队出现的“假溢出”而提出的,即将顺序队的首尾链接起来,形成一个环状空间。
    判断循环队列队满的条件:(Q.rear+1)%Maxsize==Q.front;队空条件:Q.rear=Q.front;判断队列中元素的个数:(Q.rear-Q.front+Maxsize)%Maxsize。

    3)链队:采用链式存储的队列,它实际上是带队头指针和队尾指针的单链表。头指针指向队头结点,尾指针指向队尾结点,即单链表中的最后一个结点。判空:Q.front==NULL,Q.rear=NULL
    4)双端队列:是两端都可以进行入队和出队操作的队列。其元素在逻辑上仍符合线性结构的特点,将队列的两端,分为前端和后端,都可进行插入、删除操作。——其可以分为,多种形式的操作受限的双端队列形式:输入受限的双端队列、输出受限的双端队列等。

3、数组(线性表的推广):数组是由n个类型相同的数据元素构成的有限序列,每一个元素称为数组元素。

  • 数组元素的存储结构(前者的线性表、栈和队列的存储结构大体上有,顺序存储、链式存储两大类):对于一维数组存储,采用一般方式,即在计算机中占用一段连续的存储空间。对于多维数组存储,则采用按行优先存储和按列优先存储。(大多是二维数组)
  • 1)按行优先存储:先行后列,先存储行号较小的元素,行号相等的先存储列号较小的元素。
  • 2)按列优先存储:先列后行,先存储列号较小的元素,列号相等的先存储行号较小的元素。

矩阵的压缩存储(二维数组的特殊存储方法)

  • 压缩存储:将多个值相同的元素只分配一个存储空间,对于零元素不分配存储空间。其目的是为了节省空间。
  • 特殊矩阵:是指具有许多相同矩阵元素和零元素,并且这些矩阵元素和零元素的分布有一定规律性的矩阵。
  • 常见的特殊矩阵:对称矩阵、上(下)三角矩阵、对角矩阵等。
  • 特殊矩阵的压缩方法:找出特殊矩阵中值相同的矩阵元素的分布规律,把那些呈现规律性分布的且值相同的多个矩阵元素存储到一个存储空间中。
  • 对于一个n阶矩阵都有,上三角区、下三角区和主对角线
  • 对称矩阵:若对于一个n阶方阵中的任意一个元素a[i][j],均有a[i][j]==a[j][i],则称其为对称矩阵。
  • 对于对称矩阵来说,其上三角区与下三角区的对应矩阵元素是相等的,若采用二维数组的存储方式,就易造成很大的空间浪费。
  • 对称存储的压缩策略:1)只存储主对角线+下三角区。2)只存储主对角线+上三角区。
  • 三角矩阵:分为上三角矩阵和下三角矩阵,上三角矩阵中的下三角区的矩阵元素全为同一常量。其存储思想与对称矩阵的存储思想相似。
  • 三对角矩阵(又称带状矩阵):对于n阶方阵中的任意一个元素a[i][j],当|i-j|>1时,有a[i][j]=0(i,j<=n),则称为三对角矩阵。
  • 稀疏矩阵:在矩阵中非零元素的个数t,相对于矩阵元素的个数s来说的非常少,即s>>t的矩阵称为稀疏矩阵。
  • 1)稀疏矩阵的存储方法:采用三元组(行标、列标、值)存储方法,而这样的一个三元组既可以采用数组存储,也可以采用十字链表的方法来存储。
  • 采用二元组存储稀疏矩阵的原因:稀疏矩阵中非零元素相对较少,且零元素的分布通常又是无规律可言的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值