《数组和广义表》PPT课件

合集下载

数据结构(C语言版 李素若)第五章 数组和广义表PPT资料优秀版

数据结构(C语言版 李素若)第五章 数组和广义表PPT资料优秀版
if(StrE按mpty行(S))*优ls = N先UL的L; 顺序存放元素,因此,数组元素地址的计算公式为
OLink *hl; Head(B)=e Tail(B)=() 4.求广义表的深度
h广p义), s表ub的); 定q=义p;并没有限制元L素O的递C归(,)=即广L义O表也C可(以a是11其1自)+身d的2子d表3。(i1-1)+d3(i2-1)+(i3-1)
5.3 矩阵压缩存储 18
5.3.1 对称矩阵
对称矩阵的特点是:在一个n阶方阵中,有aij=aji,其中 1≤i,j≤n。对称矩阵关于主对角线对称,比如,我们只存储下三 角中的元素aij,其特点是中j≤i且1≤i≤n,对于上三角中的元素 aij,它和对应的aji相等,因此当访问的元素在上三角时,直接 去访问和它对应的下三角元素即可,这样,原来需要n*n个存 储单元,现在只需要n(n+1)/2个存储单元了,节约了n(n-1)/2个 存储单元,当n较大时,这是可观的一部分存储资源。
第5章 数组和广义表
1
5.1 数组类型定义 5.2 数组顺序存储和实现 5.3 矩阵压缩存储 5.4 稀疏矩阵 5.5 广义表
5.1 数组类型的定义 2
1.一维数组 一维数组可以看成是一个线性表或一个向量(第2章已经介 绍),它在计算机内是存放在一块连续的存储单元中,适合于 随机查找。这在第2章的线性表的顺序存储结构中已经介绍。 2.二维数组 二维数组中的每一个元素最多可有两个直接前驱和两个直接 后继(边界除外),故是一种典型的非线性结构。例如,设A 是一个有m行n列的二维数组,则A可以表示为:
LOC(bij)=LOC(b11)+(d2-c2+1)(i-1)+(j-1) 公式中第2项是i-1个整行元素,每行d2-c2+1个元素。也可以解 释为第1维下标减1乘上后面第2维下标区间。

数据结构第5章数组和广义表数组ppt课件

数据结构第5章数组和广义表数组ppt课件

if (!A.base) return ERROR;
数组基址指针
free(A.base); A.base = NULL; if !(A.bounds) return ERROR;
free(A.bounds); A.bounds=NULL;
各维长度保 存区指针 映保像存函区数指针ci
if !(A.constants) return ERROR; free(A.constants); A.constants=NULL; }

………………….
a2n

am1 am2 …….. amn
am1
am2

amn
§5.2 数组的顺序表示和实现
❖按列优先顺序存放
a11 a21

a11 a12 …….. a1n
am1 a12
a21 a22 …….. a2n
a22

………………….
am2
am1 am2 …….. amn
… a1n
a2n
一个n维数组可以看成是由若干个n-1维数组组成 的线性表。
§5.1 数组的定义
❖数组的抽象数据类型定义
ADT Array { 数据对象:D={aj1j2…jn | ji=0,…,bi-1, i=1,2,…,n,n(>0)称为数组
的维数,bi是数组第i维的长度,ji是数组元素的第i维下标, aj1…jn∈ElemSet } 数据关系:R={R1, R2,…, Rn} Ri={ < aj1…ji…jn , aj1…ji+1…jn > | 0≤jk≤bk-1, 1≤k≤n 且k≠i, 0≤ji≤bi-2, aj1…ji…jn , aj1…ji+1…jn∈D, i=1,2,…,n 基本操作:

【精品】PPT课件 数据结构Ch.5数组和广义表共42页PPT

【精品】PPT课件  数据结构Ch.5数组和广义表共42页PPT

1、最灵繁的人也看不见自己的背脊。——非洲 2、最困难的事情就是认识自己。——希腊 3、有勇气承担命运这才是英雄好汉。——黑塞 4、与肝胆人共事,无字句处读书。——周恩来 5、阅读使人充实,会谈使人敏捷,写作使人精确。——培根
1、不要轻言放弃,否则对不起自己。
2、要冒一次险!整个生命就是一Fra bibliotek冒险。走得最远的人,常是愿意 去做,并愿意去冒险的人。“稳妥”之船,从未能从岸边走远。-戴尔.卡耐基。
梦 境
3、人生就像一杯没有加糖的咖啡,喝起来是苦涩的,回味起来却有 久久不会退去的余香。
【精品】PPT课件 数据结构Ch.5数组和 4、守业的最好办法就是不断的发展。 5、当爱不能完美,我宁愿选择无悔,不管来生多么美丽,我不愿失 去今生对你的记忆,我不求天长地久的美景,我只要生生世世的轮 回里有你。 广义表

第五讲数组和广义表-

第五讲数组和广义表-

5.1 数组的类型定义 5.2 数组的顺序表示和实现 5.3 稀疏矩阵的压缩存储 5.4 广义表的类型定义 5.5 广义表的表示方法 5.6 广义表操作的递归函数
5.1 数组的类型定义
ADT Array { 数据对象:
D={a | j1,j2, ...,,ji,jn ji =0,...,bi -1, i=1,2,..,n } 数据关系:
第五章 数组和广义表
数组和广义表可看成是一种特殊的线 性表,其特殊在于:表中的数据元素本
身也是一种线性表
5.1 数组的定义
数组是我们最熟悉的数据类型,在早期的高级 语言中,数组是唯一可供使用的数据类型。由于 数组中各元素具有统一的类型,并且数组元素的 下标一般具有固定的上界和下界,因此,数组的 处理比其它复杂的结构更为简单。多维数组是向 量的推广。例如,二维数组:
k=I*(I+1)/2+J
0≦ k<n(n+1)/2
因此,aij的地址可用下列式计算:
LOC(aij)=LOC(sa[k])
=LOC(sa[0])+k*d=LOC(sa[0]+[I*(I+1)/2+J]*d 有了上述的下标交换关系,对于任意给定一组下标 (i,j),均可在sa[k]中找到矩阵元素aij,反之,对所有 的k=0,1,2,…n(n-1)/2-1,都能确定sa[k]中的元素在矩阵 中的位置(i,j)。由此,称sa[n(n+1)/2]为阶对称矩阵A的 压缩存储,见下图:
n(n+1)/2
因此,我们可以按图中箭头所指的次序将这些元素 存放在一个向量sa[0..n(n+1)/2-1]中。为了便于访 问对称矩阵A中的元素,我们必须在aij和sa[k]

大学数据结构课件--第5章 数组和广义表

大学数据结构课件--第5章 数组和广义表

a 32 a 33 a 34 0 0
a 43 a 44 a 45 0
a 54 a 55 a 56 a 65 a 66
5.3.2 稀疏矩阵
稀疏矩阵的存储:如何表示非零元素的位置信息 1. 三元组表:每个元素用一个三元组(i,j,v)来表示。 i j v
0 1 6 1 1 6 2 3 8 12 9
2
3 4 5 6 7 8
2
5.2 数组的顺序表示和实现
a00 a00 a10 a01 存储单元是一维结构,而数组是个多维结构 , …… …… 则用一组连续存储单元存放数组的数据元素就有 am-1,0 a0,n-1 个次序约定问题。 a01 a10
a11
……
a11
……
二维数组可有两种存储方式: am-1,1 a1,n-1
……
K=
i*n-i(i-1)/2+j-i n(n+1)/2
当 i≤j 当i>j
0 a11 ... a1n-1 ... ... ... ... 0 0 0 an-1n-1
当i ≤ j时,a[i][j]是非零元素, a[i][j]前面有i行,共有n+(n-1)+(n-2)+…(n-(i-1))
=i(n+[n-(i-1)])/2=i*n-i(i-1)/2个元素,a[i][j]前面有j列,共j-i个非零元素,
A m× n
( a10 a11 … a1,n-1 )
=
注:
( … … …… ) ( am-1,0 am-1,2 … am-1,n-1 ) ( ( ( (
① 数组中的元素都具有统一的类型; ② 数组元素的下标一般都具有固定的上界和下界,即数组一旦 被定义,它的维数和维界就不再发生改变; ③ 数组的基本操作简单:初始化、销毁、存取元素和修改元素值

串数组和广义表

串数组和广义表

if (j = 0 || S[i] = T[j]) { ++i; ++j; }
// 继续比较后继字符
else j = next[j];
// 模式串向右移动
}
if (j > T[0]) return i-T[0]; // 匹配成功
else return 0;
} // Index_KMP
第21页,此课件共59页哦
(13) DestroyString(&S)
//串销毁
}ADT String
第7页,此课件共59页哦
北京林业大学信息学院
22002222年年22月月2200日日
串的存储结构
顺序存储
链式存储
第8页,此课件共59页哦
22002222年年22月月2200日日
顺序存储表示
typedef struct{
char *ch;
s'a1a2an'
串名
串值 串长
第4页,此课件共59页哦
n
空串
n=0
22002222年年22月20日
a=‘BEI’, b=‘JING’ c=‘BEIJING’
d=‘BEI JING’
第5页,此课件共59页哦
子串 主串
字符位置 子串位置 串相等
空格串
22002222年年22月月2200日日
串的抽象数据类型
} else j = nextval[j];
} } // get_nextval
第25页,此课件共59页哦
模式串t=‘abcaabbca’,该模式串的next数组的值是
( D),nextval数组的值是( )F
A. 0 1 1 1 2 2 1 1 1 B. 0 1 1 1 2 1 2 1 1

维数组和广义表ppt课件


int i,j; datatype val;
//行号、列号 //元素值
a
2n
a m1
a m2
a
mn
a11
Amn
a21
am
1
a12
a22
am
2
a1n
a2n
am
n
a11
Amn
a21
am 1
a12 a1n
a22
a2n
am 2
am
n
•非线性:元素受多个线性关系(如行、列)的约束,可多个前 驱和后继。
•元素类型相同,元素个数和元素间关系在数组建立后一般不能
2
求出i后便可得j=k−i精选(课i件−1)/2。
14
(2) 三角矩阵
下三角(上三角)矩阵:矩阵A[n][n]主对线上方(或下方)的 元素全部相同,均为常数c。多数情况下,常数c为零。
a 11 c c
a
21
a 22
c
a
n1
a n2
a
nn
a 11 a 12 a 1n
c
a 22
精选课件
19
1 三元组表
三元组表:三元组按行序(或列序)排列的顺序存储结构。
•三元组表是稀疏矩阵的一种顺序存储结构。 •一般还要指出当前表的长度,即非零元的个数 。 •要唯一确定稀疏矩阵,还必须知道矩阵的行数和列数。
const int maxsizedef struct {
第4章 多维数组和广义表
4.1 多维数组 4.2 数组的存储结构 4.3 矩阵的压缩存储
➢特殊矩阵和特殊矩阵
4.4 广义表的基本概念
精选课件
1
线性表——具有相同类型的数据元素的有限序列。 限制插入、删除位置
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档