- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
广义表的定义广义表(Lists,又称列表)是线性表的推广。在第2章中,我们把线性表定义为n=0个元素a1,a2,a3,…,an的有限序列。线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个数或一个结构,若放松对表元素的这种限制,容许它们具有其自身结构,这样就产生了广义表的概念。广义表是n(n=0)个元素a1,a2,a3,…,an的有限序列,其中ai或者是原子项,或者是一个广义表。通常记作LS=(a1,a2,a3,…,an)。LS是广义表的名字,n为它的长度。若ai是广义表,则称它为LS的子表。其中,data域中表示的非零元素通常以行序为主序顺序排列,它是一种下标按行有序的存储结构。这种有序存储结构可简化大多数矩阵运算算法。下面的讨论假设data域按行有序存储。(1)从一个二维矩阵创建其三元组表示以行序方式扫描二维矩阵A,将其非零的元素插入到三元组t的后面。算法如下:voidCreatMat(TSMatrixt,ElemTypeA[M][N]){ inti,j; t.rows=M;t.cols=N;t.nums=0; for(i=0;iM;i++) {for(j=0;jN;j++) if(A[i][j]!=0)/*只存储非零元素*/{t.data[t.nums].r=i;t.data[t.nums].c=j; t.data[t.nums].d=A[i][j];t.nums++; } }}(2)三元组元素赋值先在三元组t中找到适当的位置k,将k~t.nums个元素后移一位,将指定元素x插入到t.data[k]处。算法如下:intValue(TSMatrixt,ElemTypex,intrs,intcs){inti,k=0;if(rs=t.rows||cs=t.cols)return0;while(kt.numsrst.data[k].r)k++; /*查找行*/while(kt.numscst.data[k].c)k++; /*查找列*/if(t.data[k].r==rst.data[k].c==cs) t.data[k].d=x;/*存在这样的元素else/*不存在这样的元素时插入一个元素*/{for(i=t.nums-1;ik;i--)/*元素后移*/{t.data[i+1].r=t.data[i].r;t.data[i+1].c=t.data[i].c;t.data[i+1].d=t.data[i].d; } t.data[k].r=rs;t.data[k].c=cs;t.data[k].d=x; t.nums++;}return1;}(3)将指定位置的元素值赋给变量先在三元组t中找到指定的位置,将该处的元素值赋给x。算法如下:intAssign(TSMatrixt,ElemTypex,intrs,intcs){intk=0;if(rs=t.rows||cs=t.cols)return0;while(kt.numsrst.data[k].r)k++;while(kt.numscst.data[k].c)k++;if(t.data[k].r==rst.data[k].c==cs){x=t.data[k].d;return1;}elsereturn0;}(4)输出三元组从头到尾扫描三元组t,依次输出元素值。算法如下:voidDispMat(TSMatrixt){inti; if(t.nums=0)return; printf(“\
文档评论(0)