408数据结构学习笔记——栈和队列的应用、特殊矩阵的压缩(二)

简介: 408数据结构学习笔记——栈和队列的应用、特殊矩阵的压缩

3.栈在递归中的应用

函数调用的特点:最后被调用的函数最先执行结束

函数调用时,需要用一个栈存储:

  1. 调用返回地址
  2. 实参
  3. 局部变量

4.队列应用

  1. 树的层次遍历
  2. 图的广度优先遍历
  3. 操作系统——FCFS(先来先服务)

5.特殊矩阵的压缩

二维数组拥有随机存储的特性

行优先:

66a069aeddbe4f0ab6fb8e2d04bb0fa5.png

列优先: d95cc733d98448fa8bcb35bfdad28930.png

注意:矩阵的行号和列号通常从1开始,而数组下标通常由0开始

5.1.对称矩阵的压缩存储


15b18481ed4141c4bbfb8e008d48e259.png

对称矩阵的特点是上三角和下三角的元素一一相等,因此,只要存储对角线元素+上三角元素(或下三角元素)

若存储的是下三角,采用行优先的原则存入数组中

8c69dc650bd74c5ba5d35efb23eda07d.png

1.数组大小:第一行1个,第二行2个,第三行3个……第n行n个

因此,数组大小为((1 + n) * n ) / 2

2.数组下标和矩阵元素的映射:

矩阵元素:a(i,j)

数组下标B[k]:k = 1 + 2 + …… + (i - 1) + j - 1 (-1是因为数组下标从0开始)

5.2.三角矩阵的压缩存储

4e9fcaea45d9425abe4ac46dd574ea6f.png

与对称矩阵相同,存储上三角或者下三角,存储完成后,多加一个位置存储C

63ac59017f33466195c2a3231fb49dd2.png

1.数组大小 ((1 + n) * n ) / 2  + 1

2.数组下标:

访问三角时,与对称矩阵相同;访问c时,访问数组的最后一个元素c

5.3.带状矩阵的压缩存储

e8ebbaaa715e4ddfaaa7a4a41968894f.png

1.存储策略:只存储中间的带状部分

2.特点 :除了第一行和最后一行是两个元素以外,每行是三个元素,因此,共(3n - 2)个元素,数组从0开始,因此,最后一个元素的数组下标为(3n - 3)

04d160b86b8a44bcaf6519c8b3cee6a9.png

3.元素和数组下标的映射关系:a(i,j)

  1. 前i - 1行:(i - 1) * 3 - 1
  2. 第i行:j - i + 2
  3. a(i,j)是第2i + j - 2个元素
  4. 数组下标从0开始,因此数组下标为2i + j - 3

4. 已知B[k],如何得到i,j

  1. 数组下标为k,因此是第k+1个元素
  2. 前(i - 1)行元素总个数为(i - 1) * 3 - 1
  3. 前 i 行元素总个数为i * 3 - 1
  4. (i - 1) * 3 - 1 < k + 1 <= i * 3 - 1
  5. i = ⌈(k + 2) / 3

5.4.稀疏矩阵的压缩存储

7ac4afaef91d409cbdd78daae5a2ce25.png

c9b0d26b5a514c8d97f13bd4991e74b6.png

  1. 顺序存储——三元表
  2. 链式存储——十字链表


相关文章
|
22小时前
|
存储 编译器 C语言
数据结构——顺序队列与链式队列的实现-2
数据结构——顺序队列与链式队列的实现
数据结构——顺序队列与链式队列的实现-2
|
22小时前
|
存储 C语言
数据结构——顺序队列与链式队列的实现-1
数据结构——顺序队列与链式队列的实现
数据结构——顺序队列与链式队列的实现-1
|
22小时前
|
存储 NoSQL C语言
数据结构——顺序栈与链式栈的实现-2
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-2
|
22小时前
|
存储 C语言
数据结构——顺序栈与链式栈的实现-1
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-1
|
3天前
|
存储 NoSQL Redis
Redis数据结构精讲:选择与应用实战指南
Redis数据结构精讲:选择与应用实战指南
13 0
|
5天前
栈的基本应用
栈的基本应用
11 3
|
5天前
栈与队列理解
栈与队列理解
11 1
|
7天前
|
机器学习/深度学习 算法 测试技术
【单调栈】3113. 边界元素是最大值的子数组数目
【单调栈】3113. 边界元素是最大值的子数组数目
|
5天前
|
存储 算法
数据结构与算法 栈与队列
数据结构与算法 栈与队列
11 0
数据结构与算法 栈与队列
|
5天前
|
C++
数据结构(共享栈
数据结构(共享栈
6 0