数据结构实验 C语言版 数组和广义表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验 C语言版 数组和广义表

第5章 数组和广义表 5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 矩阵的压缩存储 5.4 广义表的定义 5.5 广义表的存储结构 3.十字链表  typedef struct OLNode { // 结点结构定义  int i, j; // 该非零元的行和列下标  ElemType e;  struct OLNode *right, *down; // 该非零元所在行表               //和列表的后继链域 } *OLink; typedef struct {   // 链表结构定义  OLink *rhead, *chead; // 行和列链表头指针 向量基址  int mu, nu, tu;// 稀疏矩阵的行数、列数和非零元个数 } CrossList; 当广义表非空时,称第一个元素a1为LS的表头(表头 可能是原子,也可能是列表),其余元素组成的表 (a2,a3,…,an)是LS的表尾(表尾一定是列表)。 练习 F=(a,b,(c,(d))) G=(()) H=((a,(a,b),((a,b),c))) 它们的三元组、和分别为: i j v i j v i j v 1 1 3 1 2 2 1 2 6 1 4 5 2 1 1 2 1 -1 2 2 -1 3 1 -2 3 2 4 3 1 2 3 2 4 q.data m.data n.data 例:矩阵 的十字链表: 5.4 广义表的定义 广义表(Lists,又称列表)是线性表的推广。  线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个数或一个结构,若放松对表元素的这种限制,容许它们具有其自身结构,这样就产生了广义表的概念。 广义表是n(n=0)个元素a1,a2,a3,…,an的有限序列,其中ai或者是原子项,或者是一个广义表。通常记作LS=(a1,a2,a3,…,an)。LS是广义表的名字,n为它的长度。若ai是广义表,则称它为LS的子表。   习惯上用大写字母表示广义表的名称,用小写字母表示原子。  举例: A=()---A是一个空表,其长度为0; B=(e)---B只有一个原子,其长度为1,     表头为e,表尾为空表(); C=(a,(b,c,d))---长度为2 D=(A,B,C)---其长度为3 E=(a,E)---递归表,长度为2。 思考:广义表C的表头和表尾分别是什么? 深度:广义表中括号嵌套的最大层数。 3个重要结论: 列表的元素可以是子表,而子表的元素还可以是 子表……,由此列表是一个多层次结构,可用图 形象的表示。用图示表示列表D. A=() B=(e)    C=(a,(b,c,d)) D=(A,B,C) E=(a,E) 列表可为其它列表所共享。如D。 列表可以是一个递归的表。如E。 注意()和(())的区别。 D A B C e a b c d C 5.5 广义表的存储结构 广义表中的元素可能是原子也可能是列表,因此难 以用顺序存储结构,通常采用链式存储结构,每个 数据元素可用一个结点表示。 两种方法: 方法①    表结点:           hp指示表头,tp指示表尾                atom Tag=0 原子结点: tp hp Tag=1 其形式定义如下: typedef enum {ATOM,LIST}ElemTag;// ATOM=0原子,LIST=1子表 typedef struct GLNode{  ElemTag tag;   union{    AtomType atom;//原子结点的值域    struct {struct GLNode *hp,*tp;}ptr;//ptr是表结点的指针域  } }*Glist; 举例: C=(a,(b,c,d)) * 5.1 数组的定义 二维数组: a00 a01 … a0,n-1 a10 a11 … a1,n-1 … … …

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档