《数据结构(C#)》_第5章 数组和广义表.pptVIP

  • 0
  • 0
  • 约9.57千字
  • 约 43页
  • 2026-03-07 发布于广东
  • 举报

《数据结构(C#)》_第5章 数组和广义表.ppt

//返回整个.Array中第一个匹配项的索引。publicstaticintIndexOfT(T[]array,Tvalue);//返回整个一维Array中最后一个匹配项的索引。publicstaticintLastIndexOf(Arrayarray,objectvalue);//反转整个一维Array中元素的顺序。publicstaticvoidReverse(Arrayarray);//设置给一维Array中指定位置的元素。publicvoidSetValue(objectvalue,intindex);//对整个一维Array中的元素进行排序。publicstaticvoidSort(Arrayarray);}5.5广义表一个广义表是零个或者多个原子或者子表构成的有限序列。一个不空的广义表记作L=(d1,d2,…,dn),其中di可以是单元素(原子),也可以是广义表,称为广义表的子表。n称为广义表的长度。d1称为表头,(d2,…,dn)成为表尾。广义表简称表或者列表。在线性表中,所有元素具有相同的类型。而在广义表中,每个元素可以是单个元素,也可以是一个广义表。广义表的例子A=()是一个空表;B=(6,2)是长度为2的广义表。C=(‘a’,(5,3,‘x’))是长度为2的表。D=(B,C,A)是长度为3的表。E=(B,D)是长度为2的表。F=(4,F)是一个递归表。一个广义表的元素间不仅有次序关系,而且存在层次关系,即表的钳套深度。如B的深度为1,D的深度为3.F的深度为无穷大。(广义)表的图示表结点用圈表示,原子结点用方框表示构成一棵树广义表的运算创建空的广义表:initGList(L);销毁广义表:destroyGList(L);复制广义表:copyGList(T,L);求广义表的长度:length(L);求广义表的深度:depth(L);求广义表的表头:getHead(L);求广义表的表尾:getTail(L);插入一个元素使其成为新的表头:insertFirst(L,e);删除表头元素:deleteFirst(L,e);判断表是否空:isEmpty(L);广义表作为ADTADTGlist{数据对象:D={ei|i=1,2,…,n;n?0,ei?AtomSet或ei?Glist}数据关系:R={(ei-1,ei)|ei?D}基本操作:initGList(L);操作结果:创建空表;destroyGList(L);初始条件:广义表L已存在操作结果:销毁广义表….}//Glist;广义表的存储顺序结构不适用,因为表中元素类型不同;采用类似于线性表的链式结构:L1=(5,12,’s’,47,’a’)L2=(5,(3,2,(14,9,3),(),4),2,(6,3,10))广义表的存储结构tagatom/hptptag=0:原子结点tag=1:表结点结点格式:原子结点:原子信息表结点:指向表头结点的指针指向同层下一个结点的指针0‘a’1/\05030‘x’/\head广义表的链表表示typedefenum{ATOM,LIST}ElemTag;typedefstructGLNode{ElemTagtag;//标志原子或表结点union{AtomTypeatom;//原子结点的值structGLNode*hp;//表结点的表头指针};structGLNode*tp;//指向下一个元素结点}*GList;//广义表类型是扩展的线性表求广义表的深度例如,对于广义表

文档评论(0)

1亿VIP精品文档

相关文档