数组零基础学数据结构.ppt
《数组零基础学数据结构.ppt》由会员分享,可在线阅读,更多相关《数组零基础学数据结构.ppt(50页珍藏版)》请在三一办公上搜索。
1、第7章 数组,数组是一种扩展的线性数据结构。线性表、栈、队列、串的数据元素都是不可再分的原子类型,而数组中的数据元素是可以再分的。数组可以分为一维数组和多维数组,一维数组中的元素是由原子构成的,多维数组中的元素又是一个线性表。因此,数组是一种特殊的线性表。,7.1 数组,数组是一种特殊的线性表,表中的元素可以是原子类型,也可以是一个线性表。本节主要介绍数组的定义和数组的抽象数据类型。,7.1.1 数组的定义,数组是由n个类型相同的数据元素组成的有限序列。其中,这n个数据元素占用一块地址连续的存储空间。数组中的数据元素可以是原子类型的,如整型、字符型、浮点型等,这种类型的数组称为一维数组;也可以
2、是一个线性表,这种类型的数组称为二维数组。二维数组可以看成是线性表的线性表。,7.1.2 数组的抽象数据类型,1数据对象集合2基本操作集合,7.2 数组的顺序表示与实现,一般情况下,不对数组进行插入和删除操作。如果建立了数组,则数组的维数与各维的长度不再改变,因此,数组采用的是顺序存储方式。本节的主要学习内容包括数组的顺序存储结构及顺序存储结构下的操作实现。,7.2.1 数组的顺序存储结构,在计算机中,存储器的结构是一维(线性)的结构。数组是一个多维的结构,如果要将一个多维的结构存放在一个一维的存储单元里,就必须先将多维的数组转换成一个一维的线性序列,才能将其存放在存储器中。,7.2.1 数组
3、的顺序存储结构,数组的顺序存储结构类型定义描述如下:#define MaxArraySize 3#include/*标准头文件,包含va_start、va-arg、va_end宏定义*/typedef struct DataType*base;/*数组元素的基地址*/int dim;/*数组的维数*/int*bounds;/*数组的每一维之间的界限的地址*/int*constants;/*数组存储映像常量基地址*/Array;,7.2.2 数组的基本运算,在顺序存储结构中,数组的基本运算实现如下所示。(1)数组的初始化操作。va_list的用法:(1)首先在函数里定义一个va_list型的变量
4、,这个变量是指向参数的指针;(2)然后用va_start初始化变量刚定义的va_list变量,该函数的第二个参数是第一个可变参数的前一个参数,它是一个固定的参数;(3)然后用va_arg返回可变的参数,va_arg的第二个参数是要返回的参数的类型;(4)最后用va_end结束可变参数的获取。,7.2.2 数组的基本运算,(2)销毁数组操作。void DestroyArray(Array*A)/*销毁数组。将动态申请的内存单元释放*/if(A-base)free(A-base);if(A-bounds)free(A-bounds);if(A-constants)free(A-constants)
5、;A-base=A-bounds=A-constants=NULL;/*将各个指针指向空*/A-dim=0;,7.2.2 数组的基本运算,(3)返回数组中指定的元素。int GetValue(DataType*e,Array A,)/*返回数组中指定的元素,将指定的数组的下标的元素赋值给e*/va_list ap;int offset;va_start(ap,A);if(LocateArray(A,ap,7.2.2 数组的基本运算,(4)数组的赋值操作。int AssignValue(Array A,DataType e,.)/*数组的赋值操作。将e的值赋给的指定的数组元素*/va_list
6、ap;int offset;va_start(ap,e);if(LocateArray(A,ap,7.2.2 数组的基本运算,(5)数组的定位操作。int LocateArray(Array A,va_list ap,int*offset)/*根据数组中元素的下标,求出该元素在A中的相对地址offset*/int i,instand;*offset=0;for(i=0;i=A.boundsi)return 0;*offset+=A.constantsi*instand;return 1;,7.2.3 数组的应用举例,下面通过一个例子来说明数组基本操作的用法。例7_1 利用数组的基本操作实现对数
7、组的初始化、赋值、返回数组的值及定位操作。定义一个二维数组B,并将B初始化,然后将数组B的值依次赋值给数组A,并将数组A的元素输出。,7.3 特殊矩阵的压缩存储,在许多科学与工程计算中会经常遇到矩阵运算的问题,在高级语言中,通常使用二维数组来存储矩阵。然而,在矩阵的运算中,往往在阶数很高的矩阵中存在许多相同的元素或值为零的元素。为了节省空间,需要将这些矩阵进行压缩存储。,7.3.1 对称矩阵的压缩存储,如果一个n阶的矩阵A中的元素满足性质aij=aji(0i,jn-1),则称这种矩阵为n阶对称矩阵。由于对称矩阵中的元素关于主对角线对称,因此,在对矩阵存储时,可以只存储对称矩阵中的上三角或者下三
8、角的元素,使得对称的元素共享一个存储单元。,7.3.1 对称矩阵的压缩存储,7.3.2 三角矩阵的压缩存储,三角矩阵分为两种:上三角矩阵和下三角矩阵。其中,下三角元素均为常数c或零的n阶矩阵称为上三角矩阵,上三角元素均为常数c或零的n阶矩阵称为下三角矩阵。,7.3.2 三角矩阵的压缩存储,7.3.3 对角矩阵的压缩存储,对角矩阵,也称带状矩阵,是另一类特殊的矩阵。所谓对角矩阵,就是所有的非零元素都集中在以主对角线两侧的带状区域内(对角线的个数为奇数)。也就是说除了主对角线和主对角线两边的对角线外,其他元素的值均为0.,7.3.3 对角矩阵的压缩存储,因此,k=Loc(0,0)+3*(i-1)-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 基础 数据结构

链接地址:https://www.31ppt.com/p-5059063.html