数据结构-第四章 数组

数据结构


⚡️数据结构-第一章
⚡️抽象数据类型案例
⚡️数据结构-第二章(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 nn+1/2个元素空间。

在这里插入图片描述
存储时可以以行序为主序储存下三角

按顺序存储到一维数组当中
在这里插入图片描述

三角矩阵

在这里插入图片描述

  • 特点:对角线一以下(或者以上)的数据元素(不包括对角线)全部为常数 C C C

  • 存储方法:重复元素c共享一个元素存储空间,共占用 n ( n + 1 ) / 2 + 1 n(n+1)/2+1 n(n+1)/2+1个元素

对角矩阵

在这里插入图片描述
在这里插入图片描述

稀疏矩阵存储

在这里插入图片描述
在这里插入图片描述

三元组法确定稀疏矩阵:

  由于稀疏矩阵里面的元素特别的少,所以三元组里面包含三个元素(行,列,数据本身),这样就知道了该矩阵的所有情况。
在这里插入图片描述
  三元组用顺序表存储,通常还得再加一个“总体”信息:即总行数、总列数、非零元素总个数。这样可以按照这个顺序表复现稀疏矩阵
在这里插入图片描述
在这里插入图片描述
  三元组顺序表又称有序的双下标法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

猜你喜欢

转载自blog.csdn.net/CltCj/article/details/122708510