串、数组和广义表的概念和基本操作.pptVIP

串、数组和广义表的概念和基本操作.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6) 任何一个非空广义表 LS = ( ?1, ?2, …, ?n) 均可分解为 表头 Head(LS) = ?1 和 表尾 Tail(LS) = ( ?2, …, ?n) 两部分。 例如: D = ( E, F ) = ((a, (b, c)),F ) Head( D ) = E Tail( D ) = ( F ) Head( E ) = a Tail( E ) = ( ( b, c) ) Head( (( b, c)) ) = ( b, c) Tail( (( b, c)) ) = ( ) Head( ( b, c) ) = b Tail( ( b, c) ) = ( c ) Head( ( c ) ) = c Tail( ( c ) ) = ( ) 求下列广义表操作的结果 GetHead( (a,b,c) ) GetTail( (a,b,c,d) ) GetHead( ( (a,b), (d) ) ) GetTail( ( (a,b), (d) ) ) GetHead( GetTail( ( (a,b), (c,d) ) ) ) a (b,c,d) (a,b) ((d)) (c,d) 广义表的表示方法 通常采用头、尾指针的链表结构 表结点: 原子结点: tag=1 hp tp tag=0 data 1 广义表的头尾链表存储表示: typedef enum {ATOM, LIST} ElemTag; // ATOM==0:原子, LIST==1:子表 typedef struct GLNode { ElemTag tag; // 标志域 union{ AtomType atom; // 原子结点的数据域 struct {struct GLNode *hp, *tp;} ptr; }; } *GList tag=1 hp tp ptr 表结点 1) 表头、表尾分析法: 构造存储结构的两种分析方法: 若表头为原子,则为 空表 ls=NULL 非空表 ls tag=1 指向表头的指针 指向表尾的指针 tag=0 data 否则,依次类推。 L = ( a, ( x, y ), ( ( x ) ) ) a ( x, y ) ( ) 1 L L = ( ) 0 a 1 1 1 1 1 0 x ? ? ? ( ) x 0 x 1 ? 0 y 2) 子表分析法: 若子表为原子,则为 空表 ls=NIL 非空表 1 指向子表1 的指针 tag=0 data 否则,依次类推。 1 指向子表2 的指针 1 指向子表n 的指针 ls … ? 例如: ? a (x, y) ((x)) LS=( a, (x,y), ((x)) ) ls 课堂总结 主要内容: 1.串、空串、空格串、子串、主串、位置、两串相等的概念 2. 数组的概念;理解数组的顺序存储的含义,掌握顺序存储的定位公式。 3. 广义表的概念及其结构特点。 课堂练习 设数组a[0…60, 0…70]的基地址为2048,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[32,58]的存储地址为 。 答:根据行优先公式 LOC(aij)=LOC(a00)+(i*n+j)*k (0≤im,0≤jn)   得:LOC(a32,58)=2048+(32*71+58)*2=6708 串的逻辑结构和线性表极为相似,区别 仅在于串的数据对象约束为字符集。 串的基本操作和线性表有很大差别。 在线性表的基本操作中,大多以“单个元素”作为操作对象; 在串的基本操作中,通常以“串的整体”作为操作对象。 在程序设计语言中,串只是作为输入或输出的常量出现,则只需存储此串的串值,即字符序列即可。但在多数非数值处理的程序中,串也以变

文档评论(0)

beautyeve + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档