数据结构
⚡️数据结构-第一章
⚡️抽象数据类型案例
⚡️数据结构-第二章(1)-线性结构
⚡️数据结构-第二章(2)-线性表的顺序表示和实现
⚡️数据结构-第二章(3)-顺序表(含代码)
⚡️数据结构-第二章(4)-顺序表案例(含代码)
⚡️数据结构-第二章(5)-链式存储结构
⚡️数据结构-第二章(6)-单链表基本操作的实现
⚡️数据结构-第二章(7)-双向链表和循环链表
数组
-
按照一定的格式排列起来的,具有相同类型的数据元素的集合。
-
若线性表中的数据元素为非结构的简单元素,则称为一维数组。
-
一维数组的逻辑结构:线性结构。定长的线性表。
-
声明格式:数据类型 变量名称[长度];
-
可以单个赋值,也可以统一初始化赋初值。
-
二维数组:若一维数组中的数据元素又是一维数组结构,则称为二维数组
-
二维数组的逻辑结构
-
非线性结构:每一个数据元素既在一个行表中,又在一个列表中。(不只有一个前驱,一个后继,有多个前驱,多个后继)
-
线性结构,定长的线性表:该线性表的每个数据元素也是一个定长的线性表。
-
声明格式:数据类型 变量名称[行数] [列数];
-
在C语言中,一个二维数组类型也可以定义为一维数组类型(其分量类型为一维数组类型),即
-
三维数组:若二维数组中的元素又是一个一维数组,则称作三维数组。
-
n维数组:若n-1维数组中的元素又是一个一维数组结构,则称作n维数组。
-
线性表结构是数组结构的一个特例,而数组结构又是线性表结构的扩展。
-
数组特点:结构固定——定义后,维数和维界不再改变。
-
数组基本操作:除了结构的初始化和销毁之外,只有取元素和修改元素值的操作。
-
数组的结构固定,维数和维界不变,所以,一般采用顺序存储结构来表示数组。
-
注意:数组可以是多维的,但存储数据元素的内存单元地址是一维的,因此,在存储数组结构之前,需要解决将多维关系映射到一维关系的问题。
数组的抽象数据类型定义
数组的顺序存储
一维数组
二维数组
这里怎么算的呢?
如:a[2][1]这代表前面有两行,行用i代表一行有n个元素就是i * n,1代表此元素在第一列即为:
三维数组
对称矩阵压缩存储
矩阵的常规存储:将矩阵描述为一个二维数组
矩阵的常规存储的特点:
-
可以对其元素进行随机存取;
-
矩阵运算非常简单;存储的密度为1.
不适宜常规存储的矩阵:值相同的元素很多,且呈某种规律分布;零元素多。
矩阵的压缩存储:
为多个相同的非零元素只分配一个存储空间;对零元素不分配空间。
什么是压缩存储?
若多个数据元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间。
什么样的矩阵能够压缩?
一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。
什么叫稀疏矩阵?
矩阵中非零元素的个数较少(一般小于5%)
对称矩阵
对称矩阵
特点:在n*n的矩阵中,沿主对角线对称的元素相同。
存储方法:只存储下(或者上)三角(包括主对角线)的数据元素。共占用 n ( n + 1 ) / 2 n(n+1)/2 n(n+1)/2个元素空间。
存储时可以以行序为主序储存下三角
按顺序存储到一维数组当中
三角矩阵
-
特点:对角线一以下(或者以上)的数据元素(不包括对角线)全部为常数 C C C。
-
存储方法:重复元素c共享一个元素存储空间,共占用 n ( n + 1 ) / 2 + 1 n(n+1)/2+1 n(n+1)/2+1个元素
对角矩阵
稀疏矩阵存储
三元组法确定稀疏矩阵:
由于稀疏矩阵里面的元素特别的少,所以三元组里面包含三个元素(行,列,数据本身),这样就知道了该矩阵的所有情况。
三元组用顺序表存储,通常还得再加一个“总体”信息:即总行数、总列数、非零元素总个数。这样可以按照这个顺序表复现稀疏矩阵
三元组顺序表又称有序的双下标法。
总结
期待大家和我交流,留言或者私信,一起学习,一起进步!