ImageVerifierCode 换一换
格式:PPT , 页数:22 ,大小:191KB ,
资源ID:3536753      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-3536753.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构与算法 (5).ppt)为本站会员(Facebook)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据结构与算法 (5).ppt

1、第五章. 数组和广义表 (Chapter 5. Arrays and Generalized Lists ),5.1 数组的定义,数组和广义表都是数据元素为结构类型的一种特殊的线性表。,数组的每一个元素的结构都是相同的。,数组通常分为二维数组、三维数组和 n 维数组。,下面是二维数组的定义:,下面是多维数组的定义:,求每个给定下标的数据元素的存储地址:,5.2 数组的顺序存储,数组的顺序存储有两种存储方式:即按行优先(row major order)存储或按列优先(column major order )存储。,这就说明了多维数组是一种随机存取的存储结构。,5.3 矩阵压缩存储,矩阵是很多科学

2、与工程计算中常使用的数据结构。在实际应用中,很多矩阵存在大量零元素或重复元素,为节省存储空间,可对这类矩阵进行压缩存储。,特殊矩阵:,这类矩阵由于零元素或重复元素的分布很有规律,可以很容易地把矩阵压缩存储在一个一维数数组中。,稀疏矩阵:,这类矩阵非零元素很少,但它们的分布没有规律,因此在压缩存储时须同时存储非零元素的下标和值。可用三元组表(list of 3-tuples)来存储(行号,列号,值)。,如下三角矩阵有映射 k = i (i-1)/2+j (ij), Aij=Bk (ij), Aij=0 (ij):,#define MAXNUM 大于矩阵中非零元素个数的常数 typedef str

3、uct int i, j; elemtype e; triple; typedef struct triple dataMAXNUM+1 ;int mu, nu, tu; matrix;,稀疏矩阵还可用带行索引的二元组表、十字链表等表示。,最常用的一种算法是求矩阵的转置:,因三元组表是按行优先排序的,故需先确定转置后矩阵各行的元素个数,预留出位置再进行转置。,作 业9. 设有上三角矩阵(aij)nn ,将其上三角元素逐行存于数组B(1:m)中,使得Bk= aij,且k= f1(i)+ f2(j)+c。试推导函数 f1、f2 和常数项 c,其中1i,jn。 10. 设计一个算法,将数组 A(1:

4、n) 中的元素循环右移 k 位,要求只用一个元素的附加空间,元素移动或交换次数为O(n)。,5.4 广义表的定义,广义表又称列表,其每一个元素的结构都可能是不同的。,通常广义表记着 : LS = (d1, d2, d3,. , dn ),其中 D0 为某数据对象,di 可以是原子(atom),也可以是广义表,称为 LS 的子表(sublist)。,其中第一个元素 d1 称为表 LS 的表头(head),由余下元素组成的表 (d2, d3,. , dn ) 称为LS的表尾(tail)。广义表中括号的重数称为广义表的深度。,函数 Head 与函数 Tail 分别求广义表的表头和表尾。,函数 Dep

5、th 求广义表的深度。,如下列均为广义表:,1、 A 是一个空表,其长度为零;,2、 B 只有一个元素,其长度为一;,3、 C 有两个元素,其长度为二;,4、 D 有四个元素,其长度为四;,5、 E 有两个元素,其长度为二。,Head(A) = Tail(A) = ( ) Depth(A) = 1,Head(B) = a Tail(B) = ( ) Depth (B) = 1,Head(C) = a Tail(C) = ( ( a, b, c) ) Depth (C) = 2,Head(D) = ( ) Tail(D) = ( B,C, d ) Depth (D) = 3,Head(E) =

6、E Tail(E) = ( e ) Depth (D) = ,typedef enum ATOM, LIST elemtag; typedef struct node elemtag tag;union datatype atom; struct struct node *hp, *tp; ptr; ; * glist;,它有两种结点,原子用两个域,子表用三个域,其中hp 指向表头, tp 指向表尾:,第一种存储结构如下:,5.5 广义表的存储结构,typedef enum ATOM, LIST elemtag; typedef struct node elemtag tag;union da

7、tatype atom; struct node *hp; ;struct node *tp; * glist;,它也有两种结点,但原子和子表都用三个域,其中 hp 指向表头, tp 指向表尾:,第二种存储结构如下:,广义表可用来存储 m 元多项式:,将 m 元多项式先分解成主变元的多项式,则可将其看作一元多项式,而每个系数则是 m-1 元多项式;利用此法可将m-1 元多项式进一步分解,直至每个系数为常数。,5.6 广义表的递归算法,1、求广义表的深度,int Depth ( glist L ) if ( ! L ) return 1;if ( L-tag = ATOM ) return 0;

8、maxdep = 0; p = L;for ( ; p ; p = p-ptr.tp ) d = Depth( p-ptr.hp );if ( d maxdep ) maxdep = d;return maxdep + 1; ,2、复制广义表,void CopyGL ( glist L, glist ,3、建立广义表,void CreateGL ( glist ,void sever ( String ,作 业11. 求下列广义表运算的结果: 1、Head(a,b),(c,d) 2、Tail(a,b),(c,d) 3、HeadTail(a,b),(c,d) 4、TailHead(a,b),(c,d) 5、HeadTailHead (a,b),(c,d) 6、TailHeadTail (a,b),(c,d),12. 利用 Head 和 Tail 运算将下列广义表中的原子 c 取出来: 1、L1=(a,b, c,d) 2、L2=(a,b),(c,d) 3、L3=(a),(b), (c),(d) 4、L4=(a,(b),(c),(d) 5、L5=(a),(b),(c),d) 6、L6=(a),b),c),d) 7、L7=(a,(b,(c,(d) 8、L8=(a,(b,(c),d),

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报