- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5数组广义表
数 据 结 构 第五章 数组和广义表 5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵 5.4 广义表的定义 5.5 广义表的存储结构 (2)返回给定位置的元素内容 int Value(ARRAY *A,Elemtype *elem,int index1,int index2) { if (index10||index1=MAX_ROW_INDEX|| index20||index2=MAX_COL_INDEX) return FALSE; else { *elem= A.elem[index1][index2]; } return OK; } 3、对角矩阵 对角矩阵中,所有的非零元素集中在以主对角线为了中心的带状区域中,即除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素皆为零。下图给出了一个三对角矩阵, a00 a01 a10 a11 a12 a21 a22 a23 …. ….. …. 图5.3 对角矩阵 an-2 n-3 an-2 n-2 an-2 n-1 an-1 n-2 an-1 n-1 (1)返回元素内容 int Value(tripletable *M,datatype *elem,int i,int j)if (i1||irows||j1||jcols) exit(ERROR);else { for (p=0;pM.tu;p++)if (M-elem[p].i==iM-elem[p].j==j) { *elem=M-elem[p].v; return OK; }else if (M-elem[p].ii||M-elem[p].i==iM-Elem[p].jj) break;*elem=0;return OK;}} (2)输出三元组表示的稀疏矩阵 void Print(tripletable *M){for (p=0,i=1;i=M-rows;i++) {for (j=1;j=M-cols;j++)if (pM-tuM-elem[p].i==iM-elem[p].j==j) printf(%4d,M-elem[p++].v;);else printf(%4d,0);printf(\n);} 通常用圆括号将广义表括起来,用逗号分隔其中的元素。为了区别原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。若广义表LS(n=1)非空,则a1是LS的表头,其余元素组成的表(a2,a3,…an)称为LS的表尾。显然广义表是递归定义的,这是因为在定义广义表时又用到了广义表的概念。广义表的例子如下: (1)A=()--A是一个空表,其长度为零。(2)B=(e)--表B只有一个原子e,B的长度为1。(3)C=(a,(b,c,d))--表C的长度为2,两个元素分别为原子a和子表(b,c,d)。(4)D=(A,B,C)--表D的长度为3,三个元素都是广义表。显然,将子表的值代入后,则有D=(( ),(e),(a,(b,c,d)))。(5)E=(E)--这是一个递归的表,它的长度为2,E相当于一个无限的广义表E=(a,(a,(a,(a,…)))). 从上述定义和例子可推出广义表的三个重要结论:(1)广义表的元素可以是子表,而子表的元素还可以是子表,。由此,广义表是一个多层次的结构,可以用图形象地表示。(2)广义表可为其它表所共享。例如在上述例(4)中,广义表A,B,C为D的子表,则在D中可以不必列出子表的值,而是通过子表的名称来引用。(3)广义表的递归性。综上所述,广义表不仅是线性表的推广,也是树的推广。 2.2 广义表的存储结构由于广义表(a1,a2,a3,…an)中的数据元素可以具有不同的结构,(或是原子,或是广义表),因此,难以用顺序存储结构表示,通常采用链式存储结构,每个数据元素可用一个结点表示。由于广义表中有两种数据元素,原子或广义表,因此,需要两种结构的结点:一种是表结点,一种是原
文档评论(0)