- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构广义表、开发结构、排序、树和图ppt204
数据结构 数据结构广义表 广义表的初步认识 广义表(又称为列表)是n(n=0)个数据元素a1,a2,…, ai ,…,an的有限序列,一般记作: ls=(a1,a2,…, ai ,…,an) 其中,ls是广义表(a1,a2,…,an)的名称,n是它的长度。每个ai (1=i=n)是ls的成员,它可以是单个元素,也可以是一个广义表, 分别称为广义表ls的单元素和子表。当广义表ls非空时,称第一个元素a1为ls的表头(head), 称第其余元素组成的表(a2,a3 ,…,an)为ls的表尾(tail) 广义表的初步认识 例: A=( ) A是空表,其长度为0。 B=(e) B中只有一个单元素e,长度为1。 C=(a,(b,c,d)) D=(A,B,C) D的长度为3,三个元素都是列表。 D=(( ),(e), (a,(b,c,d))) E=(a,E) E是一个长度为2的递归的广义表,E相当于一个无穷表E=(a, (a, (a,……))) F=(( )) F的长度为1,其中的一个元素为一个空表。 广义表的初步认识 特性: (1)广义表是一个多层次的结构。因为广义表的元素可以是一个子表,而子表的元素还可以是子表。 (2)广义表可以为其它广义表所共享。例如在上述的例子中,广义表A,B,C为D的子表,则在D中可以不必列出子表的值,而是通过子表的名称来引用。 (3)广义表可以是一个递归表,即广义表也可以是本身的一个子表。例如广义表E就是一个递归表。 二个重要的基本操作 取头操作 head 取尾操作 tail 对于广义表ls=(a1,a2,…,an) head(ls)= a1 tail(ls)= (a2, a3 ,…,an) 对于任意一个非空的列表,其表头可能是单元素也可能是列表,而其表尾必为列表。例如: head(C)=a tail(C)=(b,c,d) head(D)=A tail(D)=(B,C) head(F)=( ) tail(F)=( ) 取头去尾复合操作 用H表示取头操作head,用T表示取尾操作tail,对于广义表ls=(a,(b,c,d))执行一系列的基本操作,其结果如下: H(ls)=a T(ls)= ((b,c,d)) H(T(ls))=(b,c,d) T(T(ls))=( ) H(H(T(ls)))=b T(H(T(ls)))= (c,d) 其他操作 member(e,ls) 判别e是否为ls的成员 merg(ls1,ls2) 以ls1为头ls2为尾建立广义表 equal(ls1,ls2)判别ls1,ls2是否相等 copy(ls1,ls2) 复制广义表,即按ls1建立广义表ls2 depth(ls) 求广义表ls的深度 print(ls) 打印广义表ls 广义表与其他数据结构的关系 1 与线性表的关系 当限定广义表的每一项只能是基本元素而非子表时,广义表就退化为线性表:(a1,a2,…,an); 2 与二维数组的关系 当将数组的每行(或每列)看作为子表时,数组即为一个广义表: ((a11,a12,…,a1n),(a21,a22,…,a2n),…(an1,an2,…,ann)) 3 与树的关系 树也可以用广义表来表示,例如图7.1所表示的树可以用如下的广义表来表示: (a,(b,c,d),e,(f,g)) 4. 在LISP语言中,使用函数嵌套的形式来构造程序。例如:( op(op A B)(op C D)) 在这种情形下,程序本身就是一个广义表。 存储方式:头尾表示法 二类节点 表节点 元素节点 struct node {int tag; union {char data; struct node *hp; }; struct node *tp; }; typedef struct node nodetp; typedef struct node *pointp; typedef pointp gybtp; 存储方式:头尾表示法 C=(a,(b,c,d)) ((b,c,d)) 存储方式:儿子兄弟表示法 二类节点 有儿子 无儿子 类型定义与头尾表示法的类型定义是一致的,只不过各字域所代表的含义有所不同。 存储方式:儿子兄弟表示法 C=(a,(b,c,d)) 最高层结点的tp域必为nil 广义表的类定义 class Tgyb {private:
您可能关注的文档
- Visual Basic 6.0程序设计案例教程(上)ppt211.ppt
- VB程序设计(下)ppt280.ppt
- JSP基础教程(第2版)实验练习与提高doc101.doc
- Visual Basic 6.0程序设计案例教程(下)ppt195.ppt
- Visual Basic 程序设计与实训教程(上)ppt197.ppt
- 全民健康保险药品给付规定修正规定.doc
- Visual Basic .NET程序设计教程(上)ppt133.ppt
- VB教材教学资源(范慧琳)下ppt268.ppt
- Visual Basic 程序设计与实训教程(下)ppt175.ppt
- Visual Basic. NET 程序设计(下)ppt250.ppt
最近下载
- 北京十三中2025-2026学年上学期初二数学期中考试试卷.doc VIP
- 2025-2026学年初中信息技术(信息科技)第4册泰山版(2018)教学设计合集.docx
- 黑龙江总工会招聘考试试题及答案.doc VIP
- 六年级上册数学第四单元《解决问题的策略—假设》教学课件(苏教版).pptx VIP
- 新形态一体化教材建设的探索与实践.docx VIP
- 人教版二年级数学上册期中学业质量测评卷 (范围:第一单元至第三单元) (含答案).docx VIP
- 中班科学活动动物的家讲课.pptx VIP
- 生产部绩效考核表经典.doc VIP
- 99(03)S203消防水泵接合器安装(2003年局部修改版).pdf VIP
- 2025年高考模考作文:凡事预则立,不预则废.docx VIP
原创力文档


文档评论(0)