《数据结构习题集.ppt》由会员分享,可在线阅读,更多相关《数据结构习题集.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据结构习题集 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望ai-1aies-next=p-next;p-next=s;p-next-prior=s;s-prior=p;psai-1ai插入元素算法插入元素算法2.8(a)在在P所指所指向的向的结点结点后后插插入新入新结点结点2 2数据结构数据结构-复习复习 在在 P P 所指所指向的向的结点结点前前插插入新入新结点结点插入元素算法插入元素算法2.8(b)ai-1aies-prior=p-prior;p-prio
2、r-next=s;s-next=p;p-prior=s;psai-1ai3 3数据结构数据结构-复习复习 ai-1aiai+1p-next=p-next-next;p-next-prior=p;pai-1删除元素算法删除元素算法2.8(c)删除删除结点结点P的的后继后继元素元素4 4数据结构数据结构-复习复习 ai-1aiai+1p-prior-next=p-next;p-next-prior=p-prior;pai-1删除元素算法删除元素算法2.8(e)删除删除结点结点P指指向的向的元素元素5 5数据结构数据结构-复习复习 2.11StatusInsert_SqList(SqList&va,
3、intx)/把x插入递增有序表va中if(va.length+1va.listsize)returnERROR;va.length+;for(i=va.length-1;va.elemix&i=0;i-)va.elemi+1=va.elemi;va.elemi+1=x;returnOK;/Insert_SqList6 6数据结构数据结构-复习复习 2.19StatusDelete_Between(Linklist&L,intmink,intmaxk)StatusDelete_Between(Linklist&L,intmink,intmaxk)/删除元素递增排列的链表删除元素递增排列的链表L
4、L中值大于中值大于minkmink且小于且小于maxkmaxk的所有元的所有元素素 if(L=null&minkmaxk)returnerror;if(L=null&minkmaxk)returnerror;p=L;p=L;while(p-next-datanext;while(p-next-datanext;/p/p是最后一个不大于是最后一个不大于minkmink的元素的元素if(p-next)/if(p-next)/如果还有比如果还有比minkmink更大的元素更大的元素q=p-next;q=p-next;while(q-datanext;while(q-datanext;/q/q是第一个
5、不小于是第一个不小于maxkmaxk的元素的元素p-next=q;p-next=q;free(q);free(q);/Delete_Between/Delete_Between7 7数据结构数据结构-复习复习 其它习题其它习题P16:2.102.12P18:2.212.222.242.292.338 8数据结构数据结构-复习复习 2.10StatusDeleteK(SqList&a,inti,intk)/StatusDeleteK(SqList&a,inti,intk)/删除线性删除线性表表a a中第中第i i个元素起的个元素起的k k个元素个元素 if(i1|ka.length)return
6、if(i1|ka.length)returnINFEASIBLE;INFEASIBLE;for(count=1;i+count-1=a.length-for(count=1;i+count-1B;AB;值为值为-1,-1,表示表示AB;AB;值为值为0,0,表示表示A=BA=B for(i=1;i=A.length&i=B.length;i+)for(i=1;i=A.length&iB.elemi?1:-1;returnA.elemiB.elemi?1:-1;if(A.length=B.length)return0;if(A.length=B.length)return0;returnA.le
7、ngthB.length?1:-1;returnA.lengthB.length?1:-1;/当两个字符表可以互相比较的部分完全相同时当两个字符表可以互相比较的部分完全相同时,哪个哪个较长较长,哪个就较大哪个就较大/ListComp/ListComp1010数据结构数据结构-复习复习 2.21voidreverse(SqList&A)/顺序表就地逆置for(i=1,j=A.length;ij;i+,j-)A.elemiA.elemj;/reverse1111数据结构数据结构-复习复习 2.22 voidLinkList_reverse(Linklist&L)/voidLinkList_reve
8、rse(Linklist&L)/链表的就地逆链表的就地逆置置;为简化算法为简化算法,假设表长大于假设表长大于2 2 p=L-next;q=p-next;s=q-next;p=L-next;q=p-next;s=q-next;p-next=NULL;p-next=NULL;while(s-next)while(s-next)q-next=p;p=q;q-next=p;p=q;q=s;s=s-next;/q=s;s=s-next;/把把L L的元素逐个插入新表的元素逐个插入新表表头表头q-next=p;s-next=q;L-next=s;q-next=p;s-next=q;L-next=s;/Li
9、nkList_reverse/LinkList_reverse1212数据结构数据结构-复习复习 2.24voidreverse_merge(LinkList&A,LinkList&B,LinkList&C)/voidreverse_merge(LinkList&A,LinkList&B,LinkList&C)/把元把元素递增排列的链表素递增排列的链表A A和和B B合并为合并为C,C,且且C C中元素递减排列中元素递减排列,使用原空使用原空间间 pa=A-next;pb=B-next;pre=NULL;pa=A-next;pb=B-next;pre=NULL;while(pa|pb)whil
10、e(pa|pb)if(pa-datadata|!pb)if(pa-datadata|!pb)pc=pa;q=pa-next;pa-next=pre;pa=q;pc=pa;q=pa-next;pa-next=pre;pa=q;/将将A A的元素插入新表的元素插入新表elseelsepc=pb;q=pb-next;pb-next=pre;pb=q;pc=pb;q=pb-next;pb-next=pre;pb=q;pre=pc;pre=pc;C=A;A-next=pc;/C=A;A-next=pc;/构造新表头构造新表头/reverse_merge/reverse_merge1313数据结构数据结构
11、-复习复习 2.29voidSqList_Intersect_Delete(SqList&A,SqListB,SqListC)voidSqList_Intersect_Delete(SqList&A,SqListB,SqListC)i=0;j=0;k=0;m=0;i=0;j=0;k=0;m=0;/i/i指示指示A A中元素原来的位置中元素原来的位置,m,m为移动后的位置为移动后的位置while(iA.length&jB.length&kC.length)while(iA.length&jB.length&kC.length)if(B.elemjC.elemk)j+;if(B.elemjC.el
12、emk)k+;elseif(B.elemjC.elemk)k+;elseelsesame=B.elemj;same=B.elemj;/找到了相同元素找到了相同元素samesamewhile(B.elemj=same)j+;while(B.elemj=same)j+;while(C.elemk=same)k+;while(C.elemk=same)k+;/j,k/j,k后移到新的元素后移到新的元素while(iA.length&A.elemisame)while(iA.length&A.elemisame)A.elemm+=A.elemi+;A.elemm+=A.elemi+;/需保留的元素移动
13、到新位置需保留的元素移动到新位置while(iA.length&A.elemi=same)i+;while(iA.length&A.elemi=same)i+;/跳过相同的元素跳过相同的元素/while/whilewhile(iA.length)while(inext;q=C-next;r=A-next;p=B-next;q=C-next;r=A-next;while(p&q&r)while(p&q&r)if(p-datadata)p=p-next;if(p-datadata)p=p-next;elseif(p-dataq-data)q=q-next;elseif(p-dataq-data)q
14、=q-next;elseelseu=p-data;/u=p-data;/确定待删除元素确定待删除元素u uwhile(r-next-datanext;/while(r-next-datanext;/确定最后一个小于确定最后一个小于u u的元素指针的元素指针r rif(r-next-data=u)if(r-next-data=u)s=r-next;s=r-next;while(s-data=u)while(s-data=u)t=s;s=s-next;free(t);/t=s;s=s-next;free(t);/确定第一个大于确定第一个大于u u的元素指针的元素指针s s/while/whiler
15、-next=s;/r-next=s;/删除删除r r和和s s之间的元素之间的元素/if/ifwhile(p-data=u)p=p-next;while(p-data=u)p=p-next;while(q-data=u)q=q-next;while(q-data=u)q=q-next;/else/else/while/while/LinkList_Intersect_Delete/LinkList_Intersect_Delete1515数据结构数据结构-复习复习 2.33StatusLinkList_Divide(LinkList&L,CiList&A,CiList&B,CiList&CSt
16、atusLinkList_Divide(LinkList&L,CiList&A,CiList&B,CiList&C s=L-next;s=L-next;A=(CiList*)malloc(sizeof(CiLNode);p=A;A=(CiList*)malloc(sizeof(CiLNode);p=A;B=(CiList*)malloc(sizeof(CiLNode);q=B;B=(CiList*)malloc(sizeof(CiLNode);q=B;C=(CiList*)malloc(sizeof(CiLNode);r=C;/C=(CiList*)malloc(sizeof(CiLNode)
17、;r=C;/建立头结点建立头结点while(s)while(s)if(isalphabet(s-data)if(isalphabet(s-data)p-next=s;p=s;p-next=s;p=s;elseif(isdigit(s-data)elseif(isdigit(s-data)q-next=s;q=s;q-next=s;q=s;elseelser-next=s;r=s;r-next=s;r=s;/while/whilep-next=A;q-next=B;r-next=C;/p-next=A;q-next=B;r-next=C;/完成循环链表完成循环链表/LinkList_Divide
18、/LinkList_Divide1616数据结构数据结构-复习复习 数据结构题集数据结构题集-3P22:3.3P23:3.93.12P24:3.16P25:3.281717数据结构数据结构-复习复习 3.16voidTrain_arrange(char*train)/voidTrain_arrange(char*train)/这里用字符这里用字符串串traintrain表示火车表示火车,H,H表示硬席表示硬席,S,S表示软席表示软席 p=train;q=train;p=train;q=train;InitStack(s);InitStack(s);while(*p)while(*p)if(*p
19、=H)push(s,*p);/if(*p=H)push(s,*p);/把把HH存入栈存入栈中中else*(q+)=*p;/else*(q+)=*p;/把把SS调到前部调到前部p+;p+;while(!StackEmpty(s)while(!StackEmpty(s)pop(s,c);pop(s,c);*(q+)=c;/*(q+)=c;/把把HH接在后部接在后部/Train_arrange/Train_arrange1818数据结构数据结构-复习复习 3.28voidInitCiQueue(CiQueue&Q)/初始化循环链表表示的队列QQ=(CiLNode*)malloc(sizeof(CiL
20、Node);Q-next=Q;/InitCiQueue1919数据结构数据结构-复习复习 voidEnCiQueue(CiQueue&Q,intx)voidEnCiQueue(CiQueue&Q,intx)/把元素把元素x x插入循环链表表示的队列插入循环链表表示的队列Q,QQ,Q指向队尾元素指向队尾元素,Q-next,Q-next指向头结点指向头结点,Q-next-next,Q-next-next指向队头元素指向队头元素 p=(CiLNode*)malloc(sizeof(CiLNode);p=(CiLNode*)malloc(sizeof(CiLNode);p-data=x;p-data=
21、x;p-next=Q-next;/p-next=Q-next;/直接把直接把p p加在加在Q Q的后面的后面Q-next=p;Q-next=p;Q=p;/Q=p;/修改尾指针修改尾指针3.282020数据结构数据结构-复习复习 StatusDeCiQueue(CiQueue&Q,intx)StatusDeCiQueue(CiQueue&Q,intx)/从循环链表表示的队列从循环链表表示的队列Q Q头部删除元素头部删除元素x x if(Q=Q-next)returnINFEASIBLE;if(Q=Q-next)returnINFEASIBLE;/队列已空队列已空p=Q-next-next;p=Q
22、-next-next;x=p-data;x=p-data;Q-next-next=p-next;Q-next-next=p-next;free(p);free(p);returnOK;returnOK;/DeCiQueue/DeCiQueue3.282121数据结构数据结构-复习复习 P22:3.4P23:3.10P24:3.133.153.173.193.21P26:3.303.31其它习题其它习题2222数据结构数据结构-复习复习 typedefstructtypedefstructElemtype*base2;Elemtype*base2;Elemtype*top2;Elemtype*t
23、op2;BDStacktype;/BDStacktype;/双向栈类型双向栈类型 StatusInit_Stack(BDStacktype&tws,intm)StatusInit_Stack(BDStacktype&tws,intm)tws.base0=(Elemtype*)malloc(sizeof(Elemtype)tws.base0=(Elemtype*)malloc(sizeof(Elemtype);tws.base1=tws.base0+m;tws.base1=tws.base0+m;tws.top0=tws.base0;tws.top0=tws.base0;tws.top1=tws
24、.base1;tws.top1=tws.base1;returnOK;returnOK;/Init_Stack/Init_Stack3.152323数据结构数据结构-复习复习 typedefstructtypedefstructElemtype*base2;Elemtype*base2;Elemtype*top2;Elemtype*top2;BDStacktype;/BDStacktype;/双向栈类型双向栈类型 Statuspush(BDStacktype&tws,inti,Elemtypex)Statuspush(BDStacktype&tws,inti,Elemtypex)/x/x入栈入
25、栈,i=0,i=0表示低端栈表示低端栈,i=1,i=1表示高端栈表示高端栈 if(tws.top0tws.top1)returnOVERFLOW;if(tws.top0tws.top1)returnOVERFLOW;if(i=0)*tws.top0+=x;if(i=0)*tws.top0+=x;elseif(i=1)*tws.top1-=x;elseif(i=1)*tws.top1-=x;elsereturnERROR;elsereturnERROR;returnOK;returnOK;/push/push3.152424数据结构数据结构-复习复习 typedefstructtypedefst
26、ructElemtype*base2;Elemtype*base2;Elemtype*top2;Elemtype*top2;BDStacktype;/BDStacktype;/双向栈类型双向栈类型 Statuspop(BDStacktype&tws,inti,Elemtype&x)Statuspop(BDStacktype&tws,inti,Elemtype&x)if(i=0)if(i=0)if(tws.top0=tws.base0)returnOVERFLOW;if(tws.top0=tws.base0)returnOVERFLOW;x=*-tws.top0;x=*-tws.top0;els
27、eif(i=1)elseif(i=1)if(tws.top1=tws.base1)returnOVERFLOW;if(tws.top1=tws.base1)returnOVERFLOW;x=*+tws.top1;x=*+tws.top1;elsereturnERROR;elsereturnERROR;returnOK;returnOK;/pop/pop3.152525数据结构数据结构-复习复习 intIsReverse()intIsReverse()InitStack(s);InitStack(s);while(e=getchar()!=&)while(e=getchar()!=&)if(e=
28、)return0;if(e=)return0;push(s,e);push(s,e);while(e=getchar()!=)while(e=getchar()!=)if(StackEmpty(s)return0;if(StackEmpty(s)return0;pop(s,c);pop(s,c);if(e!=c)return0;if(e!=c)return0;if(!StackEmpty(s)return0;if(!StackEmpty(s)return0;return1;return1;/IsReverse/IsReverse3.172626数据结构数据结构-复习复习 StatusAllBr
29、ackets_Test(char*str)StatusAllBrackets_Test(char*str)InitStack(s);InitStack(s);for(p=str;*p;p+)for(p=str;*p;p+)if(*p=(|*p=|*p=)push(s,*p);if(*p=(|*p=|*p=)push(s,*p);elseif(*p=)|*p=|*p=)elseif(*p=)|*p=|*p=)if(StackEmpty(s)returnERROR;if(StackEmpty(s)returnERROR;pop(s,c);pop(s,c);if(*p=)&c!=()returnER
30、ROR;if(*p=)&c!=()returnERROR;if(*p=&c!=)returnERROR;if(*p=&c!=)returnERROR;if(*p=&c!=)returnERROR;if(*p=&c!=)returnERROR;/for/forif(!StackEmpty(s)returnERROR;if(!StackEmpty(s)returnERROR;returnOK;returnOK;/AllBrackets_Test/AllBrackets_Test3.192727数据结构数据结构-复习复习 2828数据结构数据结构-复习复习 voidNiBoLan(char*str,
31、char*new)voidNiBoLan(char*str,char*new)p=str;q=new;p=str;q=new;InitStack(s);/sInitStack(s);/s为运算符栈为运算符栈为运算符栈为运算符栈while(*p)while(*p)if(*pif(*p是字母是字母是字母是字母)*q+=*p;/)*q+=*p;/直接输出直接输出直接输出直接输出elseelsec=gettop(s);c=gettop(s);if(*pif(*p优先级比优先级比优先级比优先级比c c高高高高)push(s,*p);)push(s,*p);elseelsewhile(gettop(s)w
32、hile(gettop(s)优先级不比优先级不比优先级不比优先级不比*p*p低低低低)pop(s,c);*(q+)=c;pop(s,c);*(q+)=c;/while/whilepush(s,*p);push(s,*p);/else/else/else/elsep+;p+;/while/while/NiBoLan/NiBoLan3.212929数据结构数据结构-复习复习 StatusEnCyQueue(CyQueue&Q,intx)StatusEnCyQueue(CyQueue&Q,intx)if(Q.length=MAXSIZE)returnOVERFLOW;if(Q.length=MAXS
33、IZE)returnOVERFLOW;Q.rear=(Q.rear+1)%MAXSIZE;Q.rear=(Q.rear+1)%MAXSIZE;Q.baseQ.rear=x;Q.baseQ.rear=x;Q.length+;Q.length+;returnOK;returnOK;/EnCyQueue/EnCyQueue3.30StatusDeCyQueue(CyQueue&Q,int&x)StatusDeCyQueue(CyQueue&Q,int&x)if(Q.length=0)returnINFEASIBLE;if(Q.length=0)returnINFEASIBLE;head=(Q.rea
34、r-Q.length+1)%MAXSIZE;head=(Q.rear-Q.length+1)%MAXSIZE;x=Q.basehead;x=Q.basehead;Q.length-;Q.length-;/DeCyQueue/DeCyQueue3030数据结构数据结构-复习复习 intPalindrome_Test()intPalindrome_Test()InitStack(S);InitQueue(Q);InitStack(S);InitQueue(Q);while(c=getchar()!=)while(c=getchar()!=)Push(S,c);EnQueue(Q,c);Push(S
35、,c);EnQueue(Q,c);while(!StackEmpty(S)while(!StackEmpty(S)Pop(S,a);DeQueue(Q,b);Pop(S,a);DeQueue(Q,b);if(a!=b)returnERROR;if(a!=b)returnERROR;returnOK;returnOK;/Palindrome_Test/Palindrome_Test3.313131数据结构数据结构-复习复习 数据结构题集数据结构题集-5P31:5.1P32:5.2P35:5.215.223232数据结构数据结构-复习复习 voidTSMatrix_Add(TSMatrixvoid
36、TSMatrix_Add(TSMatrixA,TSMatrixB,TSMatrix&CA,TSMatrixB,TSMatrix&CC.mu=A.mu;C.nu=A.nu;C.tu=0;C.mu=A.mu;C.nu=A.nu;C.tu=0;pa=1;pb=1;pc=1;pa=1;pb=1;pc=1;for(x=1;x=A.mu;x+)for(x=1;x=A.mu;x+)while(A.datapa.ix)pa+;while(A.datapa.ix)pa+;while(B.datapb.ix)pb+;while(B.datapb.iB.datapb.j)elseif(A.datapa.jB.dat
37、apb.j)C.datapc.i=x;C.datapc.i=x;C.datapc.j=B.datapb.j;C.datapc.j=B.datapb.j;C.datapc.e=B.datapb.e;C.datapc.e=B.datapb.e;pb+;pc+;pb+;pc+;elseelseC.datapc.i=x;C.datapc.i=x;C.datapc.j=A.datapa.j;C.datapc.j=A.datapa.j;C.datapc.e=A.datapa.eC.datapc.e=A.datapa.epa+;pc+;pa+;pc+;/while/while5.213333数据结构数据结构
38、-复习复习 while(A.datapa=x)/while(A.datapa=x)/插入插入A A中剩余的元素中剩余的元素(第第x x行行)C.datapc.i=x;C.datapc.i=x;C.datapc.j=A.datapa.j;C.datapc.j=A.datapa.j;C.datapc.e=A.datapa.eC.datapc.e=A.datapa.epa+;pc+;pa+;pc+;while(B.datapb=x)/while(B.datapb=x)/插入插入B B中剩余的元素中剩余的元素(第第x x行行)C.datapc.i=x;C.datapc.i=x;C.datapc.j=B
39、.datapb.j;C.datapc.j=B.datapb.j;C.datapc.e=B.datapb.e;C.datapc.e=B.datapb.e;pb+;pc+;pb+;pc+;/for/forC.tu=pc;C.tu=pc;/TSMatrix_Add/TSMatrix_Add3434数据结构数据结构-复习复习 数据结构题集数据结构题集-6P38:6.1P38:6.1P41:6.226.236.24P41:6.226.236.246.266.276.286.266.276.28P42:6.376.386.39P42:6.376.386.393535数据结构数据结构-复习复习 voidPr
40、eOrder_Nonrecursive(BitreeT)InitStack(S);Push(S,T);/根指针进栈1.while(!StackEmpty(S)2.while(Gettop(S,p)&p)3.visit(p-data);push(S,p-lchild);/向左走到尽头pop(S,p);1.if(!StackEmpty(S)2.pop(S,p);push(S,p-rchild);/向右一步/while/PreOrder_Nonrecursive6.373636数据结构数据结构-复习复习 voidPostOrder_Stack(BiTreeT)PMTypea;InitStack(S)
41、;Push(S,T,0);/根结点入栈1.while(!StackEmpty(S)2.Pop(S,a);3.switch(a.mark)case0:Push(S,a,1);if(a-lchild)Push(S,a-lchild,0);break;case1:2.Push(S,a,2);3.if(a-rchild)Push(S,a-rchild,0);break;case2:visit(a);/访问结点,返回/while/PostOrder_Stack6.383737数据结构数据结构-复习复习 voidPostOrder_Nonrecursive(EBitreeTvoidPostOrder_No
42、nrecursive(EBitreeTp=T;p=T;while(p)while(p)switch(p-mark)switch(p-mark)case0:case0:p-mark=1;p-mark=1;if(p-lchild)p=p-lchild;/if(p-lchild)p=p-lchild;/访问左子树访问左子树break;break;case1:case1:p-mark=2;p-mark=2;if(p-rchild)p=p-rchild;/if(p-rchild)p=p-rchild;/访问右子树访问右子树break;break;case2:case2:visit(p);visit(p)
43、;p-mark=0;/p-mark=0;/恢复恢复markmark值值p=p-parent;/p=p-parent;/返回双亲结点返回双亲结点/PostOrder_Nonrecursive/PostOrder_Nonrecursive6.393838数据结构数据结构-复习复习 数据结构题集数据结构题集-7P47:7.8P48:7.157.163939数据结构数据结构-复习复习 最小生成树最小生成树-普里姆算法普里姆算法取图中任意一个顶点v作为生成树的根,之后往生成树上添加新的顶点w。在添加在添加的顶点的顶点w和已经在生成树上的顶点和已经在生成树上的顶点v之之间必定存在一条边,并且该边的权值在所
44、间必定存在一条边,并且该边的权值在所有连通顶点有连通顶点v和和w之间的边中取值最小之间的边中取值最小。之后继续往生成树上添加顶点,直至生成树上含有n-1个顶点为止。4040数据结构数据结构-复习复习 最小生成树最小生成树-克鲁斯卡尔算法克鲁斯卡尔算法先构造一个只含n个顶点的子图SG,然后从权值最小的边开始,若它的添加不使SG中产生回路,则在SG上加上这条边,如此重复,直至加上n-1条边为止4141数据结构数据结构-复习复习 constMAXNUM=20;typedefenumDG,UDGGraphKind;typedef struct ArcCell VRType adj;AdjMatrix
45、MAXNUM MAXNUM;typedef struct VType vexsMAXNUM;AdjMatrix arcs;int vexnum,arcnum;GraphKind kind;MGraph;图的数组表示法图的数组表示法4242数据结构数据结构-复习复习 无向图无向图4343数据结构数据结构-复习复习 有向图有向图4444数据结构数据结构-复习复习 1.1.StatusInsert_Vex(MGraph&G,charv)2.2.if(G.vexnum+1)MAX_VERTEX_NUM)returnINFEASIBLE;3.3.G.vexs+G.vexnum=v;4.4.returnO
46、K;/Insert_Vex4545数据结构数据结构-复习复习 1.1.StatusInsert_Arc(MGraph&G,charv,charStatusInsert_Arc(MGraph&G,charv,charw)/w)/在邻接矩阵表示的图在邻接矩阵表示的图G G上插入边上插入边(v,w)(v,w)2.2.if(i=LocateVex(G,v)0)returnERROR;if(i=LocateVex(G,v)0)returnERROR;3.3.if(j=LocateVex(G,w)0)returnERROR;if(j=LocateVex(G,w)0)returnERROR;4.4.if(i
47、=j)returnERROR;if(i=j)returnERROR;5.5.if(!G.arcsij.adj)if(!G.arcsij.adj)6.6.G.arcsij.adj=1;G.arcsij.adj=1;7.7.G.arcnum+;G.arcnum+;8.8.returnOK;returnOK;/Insert_Arc/Insert_Arc4646数据结构数据结构-复习复习 1.1.StatusDelete_Vex(MGraph&G,charv)StatusDelete_Vex(MGraph&G,charv)2.2.n=G.vexnum;n=G.vexnum;3.3.if(m=Locat
48、eVex(G,v)0)returnERROR;if(m=LocateVex(G,v)0)returnERROR;4.4.G.vexsmG.vexsn;G.vexsmG.vexsn;5.5.for(i=0;in;i+)for(i=0;in;i+)6.6.G.arcsim=G.arcsin;G.arcsim=G.arcsin;7.7.G.arcsmi=G.arcsni;G.arcsmi=G.arcsni;8.8.G.arcsmm.adj=0;G.arcsmm.adj=0;9.9.G.vexnum-;G.vexnum-;10.10.returnOK;returnOK;/Delete_Vex/Dele
49、te_Vex4747数据结构数据结构-复习复习 StatusDelete_Arc(MGraph&G,charv,charw)/StatusDelete_Arc(MGraph&G,charv,charw)/在邻接在邻接矩阵表示的图矩阵表示的图G G上删除边上删除边(v,w)(v,w)if(i=LocateVex(G,v)0)returnERROR;if(i=LocateVex(G,v)0)returnERROR;if(j=LocateVex(G,w)0)returnERROR;if(j=LocateVex(G,w)0)returnERROR;if(G.arcsij.adj)if(G.arcsij
50、.adj)G.arcsij.adj=0;G.arcsij.adj=0;G.arcnum-;G.arcnum-;returnOK;returnOK;/Delete_Arc/Delete_Arc4848数据结构数据结构-复习复习 1.1.无向图邻接表无向图邻接表对图中每个顶点对图中每个顶点对图中每个顶点对图中每个顶点ViViViVi建立一个单链表建立一个单链表建立一个单链表建立一个单链表每个链表附设一个头结点每个链表附设一个头结点每个链表附设一个头结点每个链表附设一个头结点A10图的链式存储结构图的链式存储结构邻接表邻接表4949数据结构数据结构-复习复习 DBACFEA14B045C35D25E