重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第6章 数组与广义表

第6章数组与广义表 ◆数组的定义及其基本操作 ◆数组的顺序存储结构 ◆矩阵的压缩存储 ◆广义表的概念 ◆广义表的存储结构表示 ◆广义表的运算
第6章 数组与广义表 数组的定义及其基本操作 数组的顺序存储结构 矩阵的压缩存储 广义表的概念 广义表的存储结构表示 广义表的运算

数组的定义 ◆数组:由一组类型相同的数据元素构成的有限序列 且该有限序列存储在一块地址连续的内存单元中。 维数组:数组只有一个下标 ◆二维数组:数组元素都含有两个下标,形如: 12 lx 22 2
数组的定义 数组:由一组类型相同的数据元素构成的有限序列, 且该有限序列存储在一块地址连续的内存单元中。 一维数组 :数组只有一个下标。 二维数组 :数组元素都含有两个下标 ,形如:

◆二维数组与一维数组的关系:一个二维数组看成是每个 数据元素都是相同类型的一维数组的一维数组 实例:m行n列的二维数组,可以看成是一个线形表 A=(a1,a,…ap)(p=m或n)即 1 a11a12 a21a22 (a)矩阵形式表示 b)列向量的一維数组 11 22 】x (c)行向量的一维数组 图61二维数组示意图
二维数组与一维数组的关系:一个二维数组看成是每个 数据元素都是相同类型的一维数组的一维数组。 实例:m行n列的二维数组,可以看成是一个线形表 A=(a1 ,a2 ,…,ap ) (p=m 或 n) 即:

数组的性质 数组中的数据元素数目固定 数组中的数据元素具有相同的数据类型 数组中的每个数据元素都和一组唯一的下标值 对应。 ●数组是一种随机存储结构,可随机存取数组中 的任意数据元素
数组的性质: 数组中的数据元素数目固定。 数组中的数据元素具有相同的数据类型。 数组中的每个数据元素都和一组唯一的下标值 对应。 数组是一种随机存储结构,可随机存取数组中 的任意数据元素

数组的基本操作 ◆随机存:给定一组下标,存一个数据元素到该组下标对 应的内存单元中。 ◆随机取:从给定的一组下标所对应的内存单元中取出 个数据元素
随机存:给定一组下标,存一个数据元素到该组下标对 应的内存单元中。 随机取:从给定的一组下标所对应的内存单元中取出一 个数据元素。 数组的基本操作

数组的顺序存储结构 ◆数组的顺序存储结构:将数组元素顺序地存放在一片连 续的存储单元中。 ◆二维数组有两种存储方式:以列序为主序( column major order)的存储方式,如图6-2(a所示和以行序 为主序( row major order)的存储方式,如图6-2(b) 所示。 ◆地址计算:以行序为主序的存储方式为例: LOCij=LOC[0, 0+(b2xi+jxL LoC[U12…,d]Loc0.0,,0+(b2×,×如x×j+b3×.x×j2 ◆推广到n维数组 +…+如×+)xL 0C0.…,+∑∏+
数组的顺序存储结构 数组的顺序存储结构:将数组元素顺序地存放在一片连 续的存储单元中 。 二维数组有两种存储方式:以列序为主序(column major order)的存储方式,如图6-2(a)所示和以行序 为主序(row major order)的存储方式,如图6-2(b) 所示。 地址计算:以行序为主序的存储方式为例: 推广到n维数组: LOC[i,j]=LOC[0,0]+(b2i+j) L

LAon 1 LOCCAl(y=LOC(ao1) 10 A A,( Alc LOCKAm-1 (1)-LOC(aon-1)[AInI m.41) A(2=(Ao(1),A1(1),…,Ax1(1 A(2(A01),A11),…,Am1(1) A A21(a10 以列序为主序 以行序为主序
A0 (1) A1 (1) An-1 (1) 以列序为主序 以行序为主序

数组的顺序存储表示和实现的算法 typedef struct ElemType *base, /*数组元素初始地址,由初始 化操作实现* int dim /*数组的维数*/ int *bounds /*数组各维的长度,也由初始化 操作实现* int *const;/*数组的映象函数常量的初始 地址,由初始化操作实现*
数组的顺序存储表示和实现的算法: typedef struct { ElemType *base; /*数组元素初始地址,由初始 化操作实现*/ int dim; /*数组的维数*/ int *bounds; /*数组各维的长度,也由初始化 操作实现*/ int *const ; /*数组的映象函数常量的初始 地址,由初始化操作实现*/ } ;

◆数组的初始化算法: Status InitialArray array &A, int Adim) /*如果维数Adim和数组各维的长度 bounds合法,构造相应的数 组A,并返回OK值* {/*如果维数Adm不合法,返回值为 error*/ if (Adim MAXDIM) return error g A dim=Adim. A bounds=(int*)malloc(Adim*sizeof(int) if(lA bounds) exit(overflow) 如果各维长度合法,则存入 A bounds,并求出A的元素总 数 totanus totalnum=1 va_start(ap,Adim);/*ap为存放变长参数表信息的数组, 其类型为 va list*/
数组的初始化算法: Status InitialArray(Array &A, int Adim) /*如果维数Adim和数组各维的长度bounds合法,构造相应的数 组A,并返回OK值*/ { /*如果维数Adim不合法,返回值为error */ if (Adim MAXDIM) return error ; A.dim=Adim; A.bounds=(int* )malloc(Adim*sizeof(int)); if (!A.bounds) exit (overflow); /*如果各维长度合法,则存入A.bounds,并求出A的元素总 数totalnum*/ totalnum=1; va_start(ap, Adim); /*ap为存放变长参数表信息的数组, 其类型为va_list*/

for(i=0; i=0, i-) A const i]=A bounds i+1*A const i+1 return OK
for(i=0;i=0,i--) A.const [i]=A.bounds[i+1]*A.const [i+1]; return OK; }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第5章 串.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第4章 栈和队列.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第3章 线性表.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第2章 算法分析.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第1章 绪论(闫会峰).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第11章 结构体与共用体.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)渡河问题.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)模式匹配的BF算法.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)树的练习.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)习题讲解(闫会峰).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)Huffman树及其应用.ppt
- 重庆移通学院:《数据结构》课程教学资源(教程讲义,共二十八课,闫会峰).doc
- 《VC++深入详解教学》第十九讲 动态链接库(孙鑫).ppt
- 《VC++深入详解教学》第十五讲 多线程与聊天室程序的创建(孙鑫).ppt
- 《VC++深入详解教学》第十三讲 文档(孙鑫).ppt
- 《VC++深入详解教学》第十四讲 网络编程(孙鑫).ppt
- 《VC++深入详解教学》对话框(续)(孙鑫).ppt
- 《VC++深入详解教学》第二十讲 HOOK和数据库访问(孙鑫).ppt
- 《VC++深入详解教学》第十二讲 文件(孙鑫).ppt
- 《VC++深入详解教学》第十七讲 进程间通信(孙鑫).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第7章 树.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第8章 图.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)线性表操作综合运行例子.ppt
- 《Linux课件》第三章 Linux中的进程管理.ppt
- 《Linux课件》SHELL编程.ppt
- 《Linux课件》第三章 Linux的安装与配置.ppt
- 《Linux课件》第四章 Linux使用基础.ppt
- 《Linux课件》第五章 Linux系统管理.ppt
- 《Linux课件》第六章 Linux网络应用.ppt
- 《Linux课件》第二章 Linux的常用命令.ppt
- 《Linux课件》第五章 Linux网络基础.ppt
- 《Linux课件》第六章 Internet应用服务器的配置.ppt
- 《Linux课件》第七讲 linux下C语言编程——基础知识.ppt
- 《Linux课件》第三讲 linux系统中资源的访问与操作.ppt
- 《Linux课件》第四讲 shell程序设计与用户管理.ppt
- 《Linux课件》第四章 用户和组管理.ppt
- 《Linux课件》第四章 用户和组管理.ppt
- 《Linux操作系统》课程教学资源(讲义)第一章 Linux简介与安装(1-1)Linux简介.doc
- 《Linux操作系统》课程教学资源(讲义)第一章 Linux简介与安装(1-2)实例—硬盘安装RedHat Enterprise Linux 5.2.doc
- 《Linux操作系统》课程教学资源(讲义)第一章 Linux简介与安装(1-3)Linux的引导过程.doc