严蔚敏习题答案

严蔚敏习题答案

ID:83481918

大小:14.83 MB

页数:129页

时间:2023-06-28

上传者:灯火阑珊2019
严蔚敏习题答案_第1页
严蔚敏习题答案_第2页
严蔚敏习题答案_第3页
严蔚敏习题答案_第4页
严蔚敏习题答案_第5页
严蔚敏习题答案_第6页
严蔚敏习题答案_第7页
严蔚敏习题答案_第8页
严蔚敏习题答案_第9页
严蔚敏习题答案_第10页
资源描述:

《严蔚敏习题答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

:1.ᦻᦪ᪀C᱐⚪ᡠᨵ⚪!Ḅ#$%ᫀ'(⌕*ὅ,ᐹ./01:biwier,szm99,siice,23ᜮ,iamkent,zames,birdthinking,lovebuaa6,7ᫀḄ89:;ᗐ=*>?@ABCD'ᙠF⊤HIJK2.’#7Oᡠ,ᙳQᵨScTU'Vᑣ,☢ᔣZ[ஹ☢ᔣ▅^'*ὅ_`abcdefghijklm`an▭fpqᨵrsCtK3.#7Vᑣfuv?wxṹz{|⌕Ḅ}~'ᡈᱯḄ⚪!v?⌕Ḅᑖ᪆'*ὅ#$Ḅ⚪!v?|⌕Ḅ.!#$Ḅ⚪!ᨵ5.20,10.40;4.^ὅᙠ#$@⚪!ᡈk@ᐙᑖḄὃ'¡¢ὃ#7'z`a£ᦔ¥K5.ᵫ*ὅ§¨ᡠ▲'#7ª«ᙠ_¬l᪵ᡈὅ®᪵Ḅ┯°:_±'²³^ὅ´ᙠ▅^µ¶ᾯஹ¸ὃ'¹º»¼:½hl┯°'ᑏ?¿ÀḄᩭ.»¼Ḅ┯°ᡈᐸÄÅÆᦋᜐᔣ*ὅÉÊyi-ju@263.netËÌÍ1.16voidprint_descending(intx,inty,intz)஻ᢥÐᜧᑮÓÔcÕ?Öᦪ(scanf("%d,%d,%d';&x,&y,&z);if(xy;஻஺,⊤HZᣚḄÙ!jÚ,z/Ûif(yz;if(xy;஻ᑈÝ᣸cprintf(M%d%d%d\x,y,z);}//print_descending1.17Statusfib(intk,intm,int&f)஻ßk▤ᦾâ®᜿cᑡḄËm⚗ḄÅf(inttempd;if(k<2llm<0)returnERROR;if(m

1sum=l;j=oKfor(i=k+l;i<=m;i++,j++)//ß?cᑡËkìËmᐗîḄÅtemp[i]=2*sum-temp[j];f=temp[m];}returnOK;}//fibᑖ᪆:k▤ᦾâ®᜿cᑡḄËm⚗ḄÅf[m]=f[m-l]+f[m-2]+……+f[m-k]=ffm-l]+f[m-2]+……+f[m-k]+f[m-k-l]-f[m-k-l]=2*f[m-1]-f[m-k-l]ᡠzfUḄïð£ᩖò,O(m).᝞¥Qᵨ⌴õ,öᑮO(k÷m).ᓽùQᵨᨚ«ð¥Ḅ%'pöᑮO(m÷2).1.18typedefstruct{char*sport;enum{male,female}gender;charschoolname;//᪥ü,A,E,C,'DᡈE'char*result;intscore;}resulttype;typedefstruct{intmalescore;intfemalescore;inttotalscore;}scoretype;voidsummary(resulttyperesult]])஻ßᔜ᪥Ḅᵱ᝕ᑖᑖᎷᙠresult□ᦪ(scoretypescore[MAXSIZE];i=0;while(result[i].sport!=NULL)(switch(result[i].schoolname)(case'A’:scoref0].totalscore+=result[i].score;if(result[i].gender==0)score[0].malescore+=result[i].score;elsescoref0].femalescore+=result[i].score;break;caseB:

2score[0].totalscore+=result[i].score;if(resultfi].gender==0)score[0].malescore+=resultfi].score;elsescore[0].femalescore+=result[i].score;break;i++)for(i=0;i<5;i++){printf(HSchool%d:

3n,i);printf("Totalscoreofmale:%d

4n,scorefi].malescore);printf("Totalscoreoffemale:%d

5",score[i].femalescore);printf(nTotalscoreofall:%d

6

7°,score[i].totaiscore);)}//summary1.19Statusalgoll9(inta[ARRSIZE])஻i!*2AiᑡḄmaxint(last=l;for(i=1;i<=ARRSIZE;i++)(a[i-l]=last*2*i;if((a[i-l]/last)!=(2*i))reumOVERFLOW;last=a[i-l];returnOK;)}//algoll9ᑖ᪆:!"#⚗Ḅ%maxint&,(◀*+☢#⚗Ḅᖪ./012.1.20voidpolyvalue()(floattemp;float*p=a;printf(nInputnumberofterms:");scanf(n%d",&n);printf("Inputvalueofx:n);scanf(n%fr,&x);printf(nInputthe%dcoefficientsfromaOtoa%d:

8'

9+l,n);p=a;xp=l;sum=0;//xpᵨ56xḄi78for(i=0;i<=n;i++)

10scanf(n%f'\&temp);sum+=xp*(temp);xp*=x;)printf(nValueis:%fn,sum);}//polyvalue:;<=ឋ⊤2.10StatusDeleteK(SqList&a,inti,intk)஻ᑤ◀=ឋ⊤a:iAᐗCDḄkAᐗC(if(ia.length)returnINFEASIBLE;for(count=1;i+count-1v=a.length-k;count++)஻EFGHIḄᩩKa.elem[i+count-l]=a.elem[i+count+k-1];a.length-=k;returnOK;}//DeleteK2.11StatusInsert_SqList(SqList&va,intx)஻LxMᐭ⌴Pᨵ⊤va(if(va.length+l>va.listsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i—)va.elem[i+l]=va.elem[i];va.elem[i+l]=x;returnOK;}//Insert_SqList2.12intListComp(SqListA,SqListB)஻RSTU⊤AB,VᵨWX⊤YZ1,⊤YA>B;Z-1,⊤YAvB;Z0,⊤YA=B(fbr(i=1;i<=A.length&&i<=B.length;i++)if(A.elemfi]!=B.elem[i])returnA.elem[i]>B.elem[i]?l:-l;if(A.length==B.length)return0;returnA.length>B.length?11;஻!\ATU⊤]*^_RSḄ`ᑖaᐰ_c&,

11dASedAfSᜧ}//ListComp2.13LNode*Locate(LinkListL,intx)஻h⊤iḄᐗCjkWXᢣ┐(for(p=l->next;p&&p->data!=x;p=p->next);returnp;}//Locate2.14intLength(LinkListL)஻h⊤Ḅen(for(k=0,p=L;p->next;p=p->next,k++);returnk;}//Length2.15voidListConcat(LinkListha,LinkListhb,LinkList&hc)஻Lh⊤hboᙠhap☢qᡂh⊤he(hc=ha;p=ha;while(p->next)p=p->next;p->next=hb;}//ListConcat2.16stpuᫀ.2.17StatusInsert(LinkList&L,inti,intb)஻ᙠwᜮyh⊤LḄ:iAᐗCz+MᐭᐗCb(p=L;q=(LinkList*)malloc(sizeof(LNode));q.data=b;if(i==l)(q.next=p;L=q;஻Mᐭᙠh⊤ᜮ`else

12while(—i>l)p=p->next;q->next=p->next;p->next=q;//Mᐭᙠ:iAᐗCḄ{|)}//Insert2.18StatusDelete(LinkList&L,inti)஻ᙠwᜮyh⊤Lᑤ◀:iAᐗC(if(i==l)L=L->next;஻ᑤ◀:#AᐗCelse(P=L;while(—i>l)p=p->next;p->next=p->next->next;//ᑤ◀:iAᐗC){//Delete2.19StatusDelete_Between(Linklist&L,intmink,intmaxk)//ᑤ◀ᐗC⌴P᣸ᑡḄh⊤Lᜧ5mink~5maxkḄᡠᨵᐗC(p=L;while(p->next->data<=mink)p=p->next;//pᨬp#"Aᜧ5minkḄᐗCif(p->next)஻᝞ᨵRminkᜧḄᐗC(q=p->next;while(q->datanext;//q:#A~5maxkḄᐗCp->next=q;)}//Delete_Between2.20StatusDelete_Equal(Linklist&L)஻ᑤ◀ᐗC⌴P᣸ᑡḄh⊤Lᡠᨵ_cḄᐗC(p=L->next;q=p->next;//p,qᢣᔣ_\ᐗCwhile(p->next)(if(p->data!=q->data)(p=p->next;q=p->next;஻!_\ᐗC_&,p,qᔣp#

13else(while(q->data==p->data)(free(q);q=q->next;)p->next=q;p=q;q=p->next;஻!_ᐗC_&ᑤ◀ᐗC}//else}//while}//Delete_Equal2.21voidreverse(SqList&A)஻⊤Ḅfᙢ⌮|(for(i=l,j=A.length;iA.elem[j];}//reverse2.22voidLinkList_reverse(Linklist&L)஻h⊤Ḅfᙢ⌮|;Zᓄ,Ꮇ⊤eᜧ52(p=L->next;q=p->next;s=q->next;p->next=NULL;while(s->next)(q->next=p;p=q;q=s;s=s->next;஻LLḄᐗC⌲AMᐭ⊤⊤ᜮ)q->next=p;s->next=q;L->next=s;}//LinkList_reverseᑖ᪆:ᡃḄ⌲AᙢLLḄ!+ᐗCqMᐭḄh⊤ᜮ`,pZ⊤⊤ᜮ.2.23voidmergel(LinkList&A,LinkList&B,LinkList&C)஻Lh⊤ABᔠVZC,ABḄᐗC◞᣸ᑡᵨ¡(p=A->next;q=B->next;C=A;while(p&&q)(s=p->next;p->next=q;஻¢BḄᐗCMᐭif(s)

14t=q->next;q->next=s;஻᝞A£¡¢AḄᐗCMᐭ}p=sq=t}//while}//merge!2.24voidreverse_merge(LinkList&A,LinkList&B,LinkList&C)஻LᐗC⌴P᣸ᑡḄh⊤ABᔠVZC,CᐗC⌴¤᣸ᑡᵨ¡(pa=A->next;pb=B-ுnext;pre=NULL;஻papbᑖ¦ᢣᔣA,BḄ!+ᐗCwhile(pallpb){if(pa->datadatall!pb)(pc=pa;q=pa->next;pa->next=pre;pa=q;஻¢AḄᐗCMᐭ⊤)else(pc=pb;q=pb->next;pb->next=pre;pb=q;஻¢BḄᐗCMᐭ⊤)pre=pc;)C=A;A->next=pc;஻᪀⌼⊤ᜮ}//reverse_mergeᑖ᪆:Ḅᢥª~ᑮᜧḄ¬7LABḄᐗCMᐭ⊤Ḅᜮ`pcᜐᨬpᜐᳮAᡈBḄᒕᐗC.2.25voidSqList_Intersect(SqListA,SqListB,SqList&C)஻ᐗC⌴P᣸ᑡḄ=ឋ⊤ABḄᐗ±Ḅ²³VᐭC(i=lj=lk=O;while(A.elem[i]&&B.elem[j])(if(A.elem[i]B.elem[j])j++;if(A.elem[i]==B.elem[j])(C.elem|++k]=A.elem[i];஻!/´%#AᙠA,BᙠḄᐗCi++;j++;஻fµ¶ᑮC

15}//while}//SqList_Intersect2.26voidLinkList_Intersect(LinkListA,LinkListB,LinkList&C)஻ᙠh⊤᪀i·¸i⚪(p=A->next;q=B->next;pc=(LNode*)malloc(sizeof(LNode));C=pc;while(p&&q)(if(p->datadata)p=p->next;elseif(p>>data>q->data)q=q->next;else(s=(LNode*)malloc(sizeof(LNode));s->data=p->data;pc->next=s;pc=s;p=p->next;q=q->next;}}//while}//LinkList_Intersect2.27voidSqList_Intersect_True(SqList&A,SqListB)஻ᐗC⌴P᣸ᑡḄ=ឋ⊤ABḄᐗCḄ²³VifA(i=l;j=l;k=O;while(A.elem[i]&&B.elem[j])(if(A.elem[i]B.elemfj])j++;elseif(A.elem[i]!=A.elem[k])(A.eIem[++k]=A.elem[i];஻!/´%•AᙠA,BᙠḄᐗCi++;j++;஻C»ᨵfµ¶ᑮC)else{i++;j++;}}//whilewhile(A.elem[k])A.elem[k++]=0;}//SqList_Intersect_True

162.28voidLinkList_Intersect_True(LinkList&A,LinkListB)஻ᙠh⊤᪀i·¸i⚪(p=A->next;q=B->next;pc=A;while(p&&q)(if(p->datadata)p=p->next;elseif(p->data>q->data)q=q->next;elseif(p->data!=pc->data)(pc=pc->next;pc->data=p->data;p=p->next;q=q->next;}}//while}//LinkList_Intersect_True2.29voidSqList_Intersect_Delete(SqList&A,SqListB,SqListC)(i=0j=0k=0;m=0;஻iᢣYAᐗCᩭḄ{|,mZ½¾pḄ{|while(iC.elem[k])k++;else(same=B.elemfj];஻kᑮ%_cᐗCsamewhi!e(B.elem[j]==same)j++;while(C.elemfk]==same)k++;//j,kp½ᑮḄᐗCwhile(i

172.30voidLinkList_Intersect_Delete(LinkList&A,LinkListB,LinkListC)஻ᙠh⊤᪀i·¸i⚪(p=B->next;q=C->next;r=A-next;while(p&&q&&r)(if(p->datadata)p=p->next;elseif(p->data>q->data)q=q->next;else(u=p->data;஻ÐÑÒᑤ◀ᐗCuwhile(r->next->datanext;஻ÐÑᨬp#A~5uḄᐗCᢣ┐rif(r->next->data==u)(s=r->next;while(s->data==u)(t=s;s=s>next;free(t);஻ÐÑ:#Aᜧ5uḄᐗCᢣ┐s}//whiler->next=s;஻ᑤ◀rszḄᐗC}//ifwhile(p->data=u)p=p->next;while(q->data=u)q=q->next;}//else}//while}//LinkList_Intersect_Delete2.31StatusDelete_Pre(CiLNode*s)஻ᑤ◀ᓫGHh⊤ysḄÔo+Õ(p=s;while(p->next->next!=s)p=p->next;஻kᑮsḄ+ÕḄ+Õpp->next=s;returnOK;}//Delete_Pre2.32StatusDuLNode_Pre(DuLinkList&L)஻aᡂÖᔣGHh⊤yḄpre×for(p=L;!p->next->pre;p=p->next)p->next->pre=p;

18returnOK;}//DuLNode_Pre2.33StatusLinkList_Divide(LinkList&L,CiList&A,CiList&B,CiList&C)஻Lᓫh⊤LḄᐗCᢥØÙᑖZÚAGHh⊤CiListZÛᜮyḄᓫGHh⊤ØÙ.(s=L->next;A=(CiList*)malloc(sizeof(CiLNode));p=A;B=(CiList*)malloc(sizeof(CiLNode));q=B;C=(CiList*)malloc(sizeof(CiLNode));r=C;஻ÜÝᜮywhile(s)(if(isalphabet(s->data))(p->next=s;p=s;)elseif(isdigit(s->data))(q->next=s;q=s;}else{r->next=s;r=s;}}//whilep>next=A;q>next=B;r>next=C;//aᡂGHh⊤}//LinkList_Divide2.34voidPrint_XorLinkedList(XorLinkedListL)஻ªÞᔣßàÇ1ᡈh⊤ḄᐗC(p=L.left;pre=NULL;while(p){printf(”ád”,p->data);q=XorP(p->LRPtr,pre);pre=p;p=q;஻âã#AyḄLRPtr×äᐸÞyᢣ┐æç1ᡈèᓽêᑮᐸßyᢣ┐)}//Print_XorLinkedList2.35

19StatusInsert_XorLinkedList(XorLinkedList&L,intx,inti)஻ᙠ1ᡈh⊤LḄ:iAᐗC+MᐭᐗCx(p=L.left;pre=NULL;r=(XorNode*)malloc(sizeof(XorNode));r->data=x;if(i==l)஻!MᐭyᙠᨬÞëḄìí{p->LRPtr=XorP(p.LRPtr,r);r->LRPtr=p;L.left=r;returnOK;)j=l;q=p->LRPtr;஻!MᐭyᙠḄìíwhile(++jLRPtr,pre);pre=p;p=q;}஻while஻ᙠp,q\yzMᐭif(!q)returnINFEASIBLE;//i]*⊤ep->LRPtr=XorP(XorP(p->LRPtr,q),r);q->LRPtr=XorP(XorP(q->LRPtr,p),r);r>LRPtr=XorP(p,q);஻îᦋᢣ┐returnOK;}//Insert_XorLinkedList2.36StatusDelete_XorLinkedList(XorlinkedList&L,inti)஻ᑤ◀1ᡈh⊤LḄ:iAᐗC(p=L.left;pre=NULL;if(i==l)஻ᑤ◀ᨬÞyḄìí(q=p->LRPtr;q->LRPtr=XorP(q->LRPtr,p);L.left=q;free(p);returnOK;)j=lq=p->LRPtr;while(++jLRPtr,pre);pre=p;p=q;}஻while஻kᑮÒᑤyq

20if(!q)returnINFEASIBLE;//i]*⊤eif(L.right==q)//qZᨬßyḄìí(p->LRPtr=XorP(p->LRPtr,q);L.right=p;free(q);returnOK;}r=XorP(q->LRPtr,p);//qZyḄìíð&p,rᑖ¦ZᐸÞßyp->LRPtr=XorP(XorP(p->LRPtr,q),r);r->LRPtr=XorP(XorP(r->LRPtr,q),p);஻îᦋᢣ┐free(q);returnOK;}//Delete_XorLinkedList2.37voidOEReform(DuLinkedList&L)஻ᢥ1,3,5,...4,2Ḅ·᣸ÖᔣGHh⊤LḄᡠᨵy(p=L.next;while(p->next!=L&&p->next->next!=L)(p->next=p->next->next;p=p->next;)஻ð&pᢣᔣᨬp#A᜻ᦪyif(p->next==L)p->next=L->pre->pre;elsep->next=l->pre;p=p->next;஻ð&pᢣᔣᨬp#AᏔᦪywhile(p->pre->pre!=L)(p->next=p->pre->pre;p=p->next;)p->next=L;஻ᢥ⚪ó⌕õ᦮%nexthḄ᪀ð&preh÷Zøfor(p=L;p->next!=L;p=p->next)p->next->pre=p;L->pre=p;஻õ᦮prehḄ᪀c2.328}//OEReformᑖ᪆:nexthprehḄõ᦮ùúᑖËæç.᝞c&æçõ᦮Ḅûüýᵨᚮ᪘ᏔᦪḄᢣ┐ᔲᑣẚ⊤᪀⌼ᡂᜫ.2.38DuLNode*Locate_DuList(DuLinkedList&L,intx)஻freqḄᔣ⊤Ḅ!"

21p=L.next;while(p.data!=x&&p!=L)p=p->next;if(p==L)returnNULL;஻#"$ljp->freq++;q=p->pre;while(q->freq<=p->freq&&p!=L)q=q->pre;஻!"%ᐭ'(if(q!=p->pre)(p->pre->next=p->next;p->next->pre=p->pre;q->next->pre=p;p->next=q->next;q->next=p;p->pre=q;஻)᦮'()returnp;}//Locate_DuList2.39floatGetValue_SqPoly(SqPolyP,intx0)஻+ᓣ-./0Ḅ123⚗5Ḅ6(PolyTerm*q;xp=l;q=P.data;sum=0;ex=0;while(q->coef)(while(exexp)xp*=xO;sum+=q->coef*xp;q++;)returnsum;}//GetValue_SqPoly2.40voidSubtract_SqPoly(SqPolyPl,SqPolyP2,SqPoly&P3)஻+123⚗5Pl7P2Ḅ85P3(PolyTerm*p,*q,*r;Create_SqPoly(P3);஻9:;3⚗5P3p=Pl.data;q=P2.data;r=P3.data;while(p->coef&&q->coef)(if(p->expexp)(r->coef=p->coef;r->exp=p->exp;p++;r++;

22elseif(p->expexp)(r->coef=-q->coef;r->exp=q->exp;q++coef.q->coef)!=0)஻=ᨵ?@⚗A7BCDEF◤⌕ᐭP3I(r->coef=p->coef-q->coef;r->exp=p->exp;r++;}//ifp++;q++;}//else}//whilewhile(p->coef)஻ᜐᳮPlᡈP2ḄᒕN⚗(r->coef=p->coef;r->exp=p->exp;p++;r++;}while(q->coef)(r->coef=-q->coef;r->exp=q->exp;q++;r++;)}//Subtract_SqPoly2.41voidQiuDao_LinkedPoly(LinkedPoly&L)஻Oᨵᜮ⊤᪀0Ḅ123⚗5L+Q(p=L->next;if(!p->data.exp)(Lnext=p->next;p=p->next;஻RSTᦪ⚗)while(p!=L)(p>data.coef*=p->data.exp--;஻OUV⚗+Wp=p->next;

23}//QiuDao_LinkedPoly2.42voidDivide_LinkedPoly(LinkedPoly&L,&A,&B)஻X⊤0Ḅ123⚗5LYᡂ=Z[@⚗ḄA\=ZᏔ@⚗ḄB(p=L->next;A=(PolyNode*)malloc(sizeof(PolyNode));B=(PolyNode*)malloc(sizeof(PolyNode));pa=A;pb=B;while(p!=L){if(p->data.exp!=2*(p->data.exp/2))(pa->next=p;pa=p;)else(pb->next=p;pb=p;}p=p->next;}//whilepa->next=A;pb->next=B;}//Divide_LinkedPoly]^_᪘abᑡ3.15typedefstruct{Elemtype*base[2];Elemtype*top[2];}BDStacktype;஻ᔣ᪘deStatusInit_Stack(BDStacktype&tws,intm)஻fgᓄViᜧkCmḄᔣ᪘tws(tws.base[0]=(Elemtype*)malloc(sizeof(Elemtype));tws.base[1]=tws.base[0]+m;tws.top[01=tws.base[0];tws.top[l]=tws.base[1];returnOK;}//Init_Stack

24Statuspush(BDStacktype&tws,inti,Elemtypex)//xᐭ᪘,i=0⊤mno᪘,i=l⊤mpo᪘(if(tws.topfO]>tws.top[1])returnOVERFLOW;஻qrsEḄ᪘tᩩvif(i==0)*tws.top[0]++=x;elseif(i==l)*tws.top[l]—=x;elsereturnERROR;returnOK;}//pushStatuspop(BDStacktype&tws,inti,Elemtype&x)//xw᪘,i=0⊤mno᪘,i=l⊤mpo᪘(if(i==0){if(tws.top[0]==tws.base[0])returnOVERFLOW;x=*—tws.topfO];)elseif(i==l)(if(tws.topf1]==tws.base[1])returnOVERFLOW;x=*++tws.top[l];)elsereturnERROR;returnOK;}஻pop3.16voidTrain_arrange(char*train)஻xyᵨ{|}train⊤m~,'H'⊤m,S'⊤m(p=train;q=train;InitStack(s);while(*p)(if(*p=='H')push(s,*p);஻XHᐭ᪘Ielse*(q++)=*p;஻XS)$IP++<)while(!StackEmpty(s))(pop(s,c);*(q++)=c;஻XHᙠ

25}/fTrain_arrange3.17intIsReverse()஻ᑨᐭḄ{|}I&\&ᑖᔲC⌮}ᑣ1,ᔲᑣ0(InitStack(s);while((e=getchar())!='&')(if(e==,@,)return0;஻Bᐕᙠ‘&'w'@push(s,e);)while((e=getchar())!=@*)(if(StackEmpty(s))return0;pop(s,c);if(e!=c)return0;)if(!StackEmpty(s))return0;return1;}//IsReverse3.18StatusBracket_Test(char*str)஻ᑨ⊤5Ikᔲᓛ(count=0;for(p=str;*p;p++){if(*p==(,)count++;elseif(*p==y)count—;if(count<0)returnERROR;)if(count)returnERROR;஻qrBᓛḄ¡¢£returnOK;}//Bracket_Test3.19StatusAllBrackets_Test(char*str)஻ᑨ⊤5I^¡ᔲᓛ(InitStack(s);for(p=str;*p;p++)

26if(*p='('||*p='['||*p=='{,)push(s,*p);elseif(*p==')'||*p==']'||*p=='}'){if(StackEmpty(s))returnERROR;pop(s,c);if(*p==')'&&c!='(')returnERROR;if(*p==']'&&c;='[')returnERROR;if(*p=='}'&&c;='{')returnERROR;஻¤¥a¦᪘⚔ᓛ)}//forif(!StackEmpty(s))returnERROR;returnOK;}//AllBrackets_Test3.20typedefstruct{.intx;inty;}coordinate;voidRepaint_Color(intg[m][n],inti,intj,intcolor)஻X(i,j)A¨©Ḅª⁐(ᣚCcolor(oll)if(g[x-l][y]==old)(g[x-l][y]=color;EnQueue(Q,{x-l,y});஻ᦋ¯¨Ḅª⁐)if(y>Dif(g[x][y-l]==old)g[x][y-l]=color;EnQueue(Q,{x,y-l});஻ᦋ¨Ḅª⁐

27if(x

28intGetValue_NiBoLan(char*str)஻O⌮Óᐲ5+6(p=str;InitStack(s);//sCïðᦪ᪘while(*p)(if(*pᦪ)push(s,*p);else(pop(s,a);pop(s,b);r=compute(b,*p,a);//ᎷÙcomputeC᡻óôàµḄSõpush(s,r);}//elseP++<}//whilepop(s,r);retumr;}//GetValue_NiBoLan3.23StatusNiBoLan_to_BoLan(char*str,stringtype&new)஻X⌮Óᐲ⊤5strÒᣚCÓᐲ5new(p=str;Initstack(s);//sḄᐗ÷Cstringtypedewhile(*p)(if(*pC{á)push(s,*p);else(if(StackEmpty(s))returnERROR;pop(s,a);if(StackEmpty(s))returnERROR;pop(s,b);c=link(link(*p,b),a);push(s,c);}//elseP++<}//whilepop(s,new);if(!StackEmpty(s))returnERROR;returnOK;}//NiBoLan_to_BoLanᑖ᪆:ø´ÂÃØùqú.´⚪IᨚBὃ⇋}ḄᐹḄ,ᐸᦪstringtype,ᐸ:c=link(a,b).3.24

29Statusg(intm,intn,int&s)஻⌴ᦪgḄ!s(if(m==0&&n>=0)s=0;elseif(m>0&&n>=0)s=n+g(m-l,2*n);elsereturnERROR;returnOK;}//g3.25StatusF_recursive(intn,int&s)஻⌴"#(if(n<0)returnERROR;if(n==0)s=n+l;else(F_recurve(n/2,r);s=n*r;)returnOK;}//F_recursiveStatusF_nonrecursive(intn,ints)஻$⌴"#(if(n<0)returnERROR;if(n==O)s=n+l;else{InitStack(s);//sḄᐗ&'struct{inta;intb;}while(n!=0)(a=n;b=n/2;push(s,{a,b});n=b;}//whiles=l;while(!StackEmpty(s))(pop(s,t);s*=t.a;}//while)returnOK;}//F_nonrecursive

303.26floatSqrt_recursive(floatA,floatp,floate)஻()᪷Ḅ⌴"#(if(abs(pA2-A)<=e)returnp;elsereturnsqrt_recurve(A,(p+A/p)/2,e);}//Sqrt_recurvefloatSqrt_nonrecursive(floatA,floatp,floate)஻()᪷Ḅ$⌴"#(while(abs(pA2-A)>=e)p=(p+A/p)/2;returnp;}//Sqrt_nonrecursive3.27,⚪Ḅᡠᨵ"#0᪘Ḅ2ᓄ456789ᦪ:᪀(pascal᱐)>?ὅABCDᑏF.3.28voidInitCiQueue(CiQueue&Q)஻HIᓄJKL⊤⊤NḄOᑡQ(Q=(CiLNode*)malloc(sizeof(CiLNode));Q->next=Q;}//InitCiQueuevoidEnCiQueue(CiQueue&Q,intx)஻Qᐗ&xRᐭJKL⊤⊤NḄOᑡQ,QᢣᔣOVᐗ&,Q->nextᢣᔣᜮ:X,Q->next->nextᢣᔣOᜮᐗ&(p=(CiLNode*)malloc(sizeof(CiLNode));p->data=x;p->next=Q->next;஻YQpZᙠQḄ\☢Q->next=p;Q=p;஻^ᦋVᢣ┐)StatusDeCiQueue(CiQueue&Q,intx)஻aJKL⊤⊤NḄOᑡQᜮbᑤ◀ᐗ&x(if(Q==Q->next)returnINFEASIBLE;஻Oᑡefp=Q->next->next;x=p->data;Q->next->next=p->next;free(p);

31returnOK;}//DeCiQueue3.29StatusEnCyQueue(CyQueue&Q,intx)஻gtaghḄJKOᑡᐭO"#(if(Q.front==Q.rear&&Q.tag==l)//taghḄ!'0⊤N“f⊤N“j“returnOVERFLOW;Q.base[Q.rear]=x;Q.rear=(Q.rear+l)%MAXSIZE;if(Q.front==Q.rear)Q.tag=l;஻Oᑡj}//EnCyQueueStatusDeCyQueue(CyQueue&Q,int&x)஻gtaghḄJKOᑡFO"#(if(Q.front==Q.rear&&Q.tag==0)returnINFEASIBLE;Q.front=(Q.front+1)%MAXSIZE;x=Q.base[Q.front];if(Q.front==Q.rear)Q.tag=l;஻OᑡfreturnOK;}//DeCyQueueᑖ᪆:mJKOᑡnopqOᑡrstᐗ&ᓰḄfvpwx?y⊤N)#⁚{pwḄ|}fv?pᨵ~!.3.30StatusEnCyQueue(CyQueue&Q,intx)஻glengthhḄJKOᑡᐭO"#(if(Q.length==MAXSIZE)returnOVERFLOW;Q.rear=(Q.rear+l)%MAXSIZE;Q.base[Q.rear]=x;Q.length++;returnOK;}//EnCyQueueStatusDeCyQueue(CyQueue&Q,int&x)஻glengthhḄJKOᑡFO"#(if(Q.length==O)returnINFEASIBLE;head=(Q.rearQ.length+l)%MAXSIZE;஻C8\x=Q.base[head];Q.length-;}//DeCyQueue3.31

32intPalindrome_Test()஻ᑨᐭḄᔲᦻᑡ?ᑣ1,ᔲᑣ0InitStack(S);InitQueue(Q);while((c=getchar())!=f®r){Push(S,c);EnQueue(Q,c);஻xᵨ᪘O(J:᪀)while(!StackEmpty(S))(Pop(S,a);DeQueue(Q,b));if(a!=b)returnERROR;)returnOK;}//Palindrome_Test3.32voidGetFib_CyQueue(intk,intn)஻k▤ᦾ᜿ᑡḄn+1⚗(InitCyQueue(Q);஻ᐸMAXSIZE'kfor(i=0;i=avr)஻᪷xḄ!©ªRᐭᙠOᜮ«OV(Q.base[Q.rear]=x;Q.rear=(Q.rear+1)%MAXSIZE;}஻RᐭᙠOVelse

33Q.front=(Q.front-1)%MAXSIZE;Q.base[Q.front]=x;)஻RᐭᙠOᜮreturnOK;}//EnDQueueStatusDeDQueue(DQueue&Q,int&x)஻F¥▲Ḅ§¨OᑡḄFO(if(Q.front==Q.rear)returnINFEASIBLE;஻Oᑡfx=Q.base[Q.front];Q.front=(Q.front+l)%MAXSIZE;returnOK;}//DeDQueue3.34voidTrain_Rearrange(char*train)஻,ᵨtrain⊤N®¯,'P'⊤N°±,H⊤N°ᓷ,5³N´ᓷ,ᨬ¶ᢥPSHḄ¸᣸ᑡ(r=train;InitDQueue(Q);while(*r)(if(*r=='P')(printf("E");printf("D");஻▭»¼½AᐭOᑡ?YFP¯¾}elseif(*r=='S'){printf("E");EnDQueue(Q,*r,O);//0⊤NQS¯¾aᜮ¨ᐭOᑡ)else(printf("A");EnDQueue(Q,*r,l);//I⊤NQH¯¾aV¨ᐭOᑡ)}//whilewhile(!DQueueEmpty(Q))(printf("D");DeDQueue(Q);"/while஻aᜮ¨FOᑡḄ¯¾¿ᯠᐜS\HḄ¸}//Train_Rearrange

34ÂÃ4.10voidString_Reverse(Stringtypes,Stringtype&r)஻sḄ⌮r(StrAssign(rJ);஻HIᓄr'ffor(i=Strlen(s);i;i-)(StrAssign(c,SubString(s,i,1))ÅStrAssign(r,Concat(r,c));஻QsḄa\ÆÇZᑮrr)}//String_Reverse4.11voidString_Subtract(Stringtypes,Stringtypet,Stringtype&r)஻ᡠᨵᒹÊᙠsrtrËᨵÌḄ᪀ᡂḄÎr(StrAssign(r,");for(i=1;i<=Strlen(s);i++)(StrAssign(c,SubString(s,i,1))Åfor(j=l;jStrlen(t))StrAssign(r,Concat(r,c));)}//for}//String_Subtract4.12intReplace(Stringtype&S,StringtypeT,StringtypeV);஻SrᡠᨵÒTÓᣚ'V,¡ᣚÐᦪ…(for(n=0,i=l;i<=Strlen(S)-Strlen(T)+l;i++)஻ÖiḄ¢!Øif(!StrCompare(SubString(S,i,Strlen(T)),T))஻ÙᑮÚÛTᓛÝḄÒ{஻ᑖQTḄ☢\☢bᑖß|'headtailStrAssign(head,SubString(S,1,i-1));

35StrAssign(tail,SubString(S,i+Strlen(T),Strlen(S)-i-Strlen(T)+l));StrAssign(S,Concat(head,V));StrAssign(S,Concat(S,tail));஻Qhead,V,tail'Îi+=SMen(V);஻mᢣ┐àáâᐭ

36++;}//ifreturnn;}//Replaceᑖ᪆:i+=Strlen(V);,ã¿◤Ḅån᧕çᶍḄ.᝞ḕᣵ,ã,ᑣᙠìíîïð,ñòóAôõḄ\ö?÷ᯠᙠᜧwᦪîïðËᨵùú.6ûὃ:SWplaceÅT=*ace\VýfaceÅᑣḕᣵi+=Strlen(V);þxñFÿ4.13intDelete_SubString(Stringtype&s,Stringtypet)஻sᑤ◀ᡠᨵtḄ,ᑤᦪ(for(n=0,i=l;i<=Strlen(s)-Strlen(t)+l;i++)if(!StrCompare(SubString(s,i,Strlen(t)),t))(StrAssign(head,SubString(S,1,i-1));StrAssign(tail,SubString(S,i+Strlen(t),Strlen(s)-i-Strlen(t)+l));StrAssign(S,Concat(head,tail));//fChead,tailn++;}//ifreturnn,}//Delete_SubString4.14StatusNiBoLan_to_BoLan(Stringtypestr,Stringtype&new)஻⊤"#str$ᣚ&#new(Initstack(s);//sḄᐗ(Stringtype)*for(i=1;i<=Strlen(str);i++)(r=SubString(str,i,1);if(r+,)push(s,r);else(if(StackEmpty(s))returnERROR;pop(s,a);if(StackEmpty(s))returnERROR;pop(s,b);StrAssign(t,Concat(r,b));

37StrAssign(c,Concat(t,a));//./r,⊤"#a,b⊤"#cpush(s,c);}}//forpop(s,new);if(!StackEmpty(s))returnERROR;returnOK;}//NiBoLan_to_BoLanᑖ᪆:345678&9:3.23.<=ὅᵨ@ABCDEὅFGH᎛J3.23⚪LMḄAB.4.15voidStrAssign(Stringtype&T,charchars&#;)஻ᵨ+/ᦪNcharsLTOP,StringtypeḄQR7S4(for(i=0,T[0]=0;chars[i];T[0]++,i++)T[i+l]=chars[i];}//StrAssign4.16charStrCompare(Stringtypes,Stringtypet)஻ḄTU,s>tHVᦪ,s=tHO,ss[0]&&i>t[0])return0;elseif(i>s[O])return-t[i];elseif(i>t[O])returns[i];elsereturns[i]-t[i];}//StrCompare4.17intString_Replace(Stringtype&S,StringtypeT,StringtypeV);஻XSᡠᨵTYᣚV,Zᣚᦪ(for(n=0,i=1;i<=S[0]-T[0]+l;i++)(forQ=i,k=1;T[k]&&S[j]==T[k];j++,k++);if(k>T[O])஻[ᑮ]Tᓛ_Ḅ:ᑖ`abcᜐᳮ(if(T[0]==V[0])for(l=l;l<=T[0];l++)஻fghH:iYᣚS[i+l-l]=V[l];elseif(T[0]

38for(l=S[0];l>=i+T[0];l-)S[1+V[O]-T[O]]=S[1];for(l=l;l<=V[0];l++)S[i+l-l]=V[l];)else஻fgpkhH:ᐜX&mqo(for(l=i+V[0];l<=S[0]+V[0]-T[0];l++)S[1]=S[1-V[O]+T[O]];for(l=l;l<=V[0];l++)S[i+l-l]=V[l];)S[O]=S[O]-T[O]+V[O];i+=V[O];n++;}//if}//forreturnn;}//String_Replace4.18typedefstruct{charch;intnum;}mytype;voidStrAnalyze(StringtypeS)஻rsS+/Ḅa)tuᦪ(mytypeT[MAXSIZE];஻ᵨ᪀ᦪNTwxrsfor(i=l;i<=S[0];i++)(c=S[i];j=O;while(TU].ch&&T[j].ch!=c)j++;஻y[z+/c{ᔲ}~if(Tfj].ch)Trj].num++;elseT[j]={c,l};}//forfor(j=0;T[j].ch;j++)printf("%c:%d

39",T[j].ch,T[j].num);}//StrAnalyze4.19voidSubtract_String(Stringtypes,Stringtypet,Stringtype&r)஻ᡠᨵᒹᙠstᨵ+/᪀ᡂḄr

40r[0]=0;for(i=l;i<=s[0];i++)c=s[i];for(j=l;jt[O])r[++r[O]]=c;)}//for}//Subtract_String4.20intSubString_Delete(Stringtype&s,Stringtypet)஻sᑤ◀ᡠᨵtḄ,ᑤ◀ᦪ(for(n=0,i=l;i<=s[0]-t[0]+l;i++)(for(j=l;j<=t[0]&&s[i+j-l]=t[i];j++);஻[I]tᓛ_Ḅ(for(k=i;k<=s[0]-t;k++)s[k]=s[k+t];஻qoIJ◀s[0]-=t[0];n++;)}//forreturnn;}//Delete_SubString4.21typedefstruct{charch;LStrNode*next;}LStrNode,*LString;஻᪀voidStringAssign(LString&s,LStringt)஻tOPLs(s=malloc(sizeof(LStrNode));for(q=s,p=t->next;p;p=p->next)r=(LStrNode*)malloc(sizeof(LStrNode));r->ch=p->ch;q->next=r;q=r;

41q->next=NULL;}//StringAssignvoidStringCopy(LString&s,LStringt)஻tᑴs.uABḄᙠk,s}wᙠ.(for(p=s->next,q=t->next;p&&q;p=p->next,q=q->next)(p->ch=q->ch;pre=p;)while(q)(p=(LStrNode*)malloc(sizeof(LStrNode));p->ch=q->ch;pre->next=p;pre=p;}p->next=NULL;}//StringCopycharStringCompare(LStrings,LString஺஻ḄTU,s>tHVᦪ,s=tHO,snext,q=t->next;p&&q&&p->ch==q->ch;p=p->next,q=q->next);if(!p&&!q)return0;elseif(!p)return-(q->ch);elseif(!q)returnp->ch;elsereturnp->ch-q->ch;}//StringCompareintStringLen(LStrings)஻sḄfg(ᐗ(uᦪ)(for(i=0,p=s->next;p;p=p->next,i++);returni;}//StringLenLString*Concat(LStrings,LStringt)஻sttᡂᢣ┐(p=malloc(sizeof(LStrNode));for(q=p,r=s->next;r;r=r->next)(q->next=(LStrNode*)malloc(sizeof(LStrNode));q=q->next;q->ch=r->ch;}஻for஻ᑴsfor(r=t->next;r;r=r->next)

42q->next=(LStrNode*)malloc(sizeof(LStrNode));q=q->next;q->ch=r->ch;}஻for஻ᑴtq->next=NULL;returnp;}//ConcatLString*Sub_String(LStrings,intstart,intlen)஻uᐸPksstartZflenḄ(p=malloc(sizeof(LStrNode));q=p;for(r=s;start;start--,r=r->next);஻[ᑮstartᡠJḄ¡ᢣ┐rfor(i=1;i<=len;i++,r=r->next)(q->next=(LStrNode*)malloc(sizeof(LStrNode));q=q->next;q->ch=r->ch;}஻ᑴtq->next=NULL;returnp;}//Sub_String4.22voidLString_Concat(LString&t,LString&s,charc)஻ᵨᙽwx᪀s¤ᐭᑮtḄ+/C¦&(p=t.head;while(p&&!(i=Find_Char(p,c)))p=p->next;//y[+/cif(!p)//[ᑮ(t.tail->next=s.head;t.tail=s.tail;஻sᙠtḄ&☢)else(q=p->next;r=(Chunk*)malloc(sizeof(Chunk));஻Xᒹ+/cḄ⁚¡pᑖ©ªufor(j=0;jch[j]='#';஻h¡pᒹc«ᐸ¬Ḅmᑖfor(j=i;jch[j]=p->ch[j];p->ch[j]='#';//pḄ&mᑖtrḄmᑖḄ+/ᦋ¯ᦔ+/#

43p->next=s.head;s.tail->next=r;r->next=q;஻s¤ᐭᑮ¡ptr¦²}//elset.curlen+=s.curlen;஻³ᦋfs.curlen=O;}//LString_ConcatintFind_Char(Chunk*p,charc)஻ᙠ´uᙽy[+/c,᝞[ᑮᑣZ{·u+/¸I[ᑮᑣ0(for(i=O;ich[i]!=c;i++);if(i==CHUNKSIZE)return0;elsereturni+1;}//Find_Char4.23intLString_Palindrome(LStringL)஻ᑨ¬ᙽ᪀wxḄL{ᔲᦻBᑡ{ᑣ1,ᔲᑣ0(InitStack(S);p=S.head;i=0;k=l;//iᢣ»ᐗ(ᙠᙽḄ¼᪗,kᢣ»ᐗ(ᙠ᦮uBᑡḄB¿(1ÀÁ)for(k=l;k<=S.curlen;k++)(if(k<=S.curlen/2)Push(S,p->ch[i])Â஻XÃḄ+/ᐭelseif(k>(S.curlen+1)/2)(Pop(SQ;஻X&ÃḄ+/᪘Ḅᐗ(ᓛ_if(p->ch[i]!=c)return0;஻ᜫ_)if(++i==CHUNKSIZE)஻$ᑮ¼uᐗ(,zᙽᨬ&uᐗ(ᔢ$ᑮ¼ᙽ(p=p->next;i=0;)}//forreturn1;஻ᡂÈᓛ_}//LString_Palindrome4.24

44voidHString_Concat(HStringsl,HStrings2,HString&t)஻Xᚮ᪀⊤»Ḅsits2t(if(t.ch)free(t.ch);t.ch=malloc((sl.length+s2.1ength)*sizeof(char));for(i=l;i<=sl.length;i++)t.ch[i-l]=sl.ch[i-l];for(j=1;j<=s2.1ength;j++,i++)t.ch[i-l]=s2.ch[j-1];t.length=sl.length+s2.length;}//HString_Concat4.25intHString_Replace(HString&S,HStringT,HStringV)஻ᚮ᪀ÊḄZᣚËEZᣚᦪ(for(n=0,i=0;i<=S.length-T.length;i++)(for(j=i,k=O;k=i+T.length;l—)S.ch[l+V.length-T.length]=S.ch[l];for(l=0;l

45StatusHString_Insert(HString&S,intpos,HStringT)஻T¤ᐭᚮ᪀⊤»ḄSḄposu+/¦(if(pos<1)returnERROR;if(pos>S.length)pos=S.length+l;஻z¤ᐭZᜧkfHÌEÍÎᙠÏS.ch=realloc(S.ch,(S.length+T.length)*sizeof(char));for(i=S.length-1;i>=pos-l;i—)S.ch[i+T.length]=S.ch[i];஻&o¤ᐭ+/ÐMZfor(i=0;it[O])returni-t[0];}//Index_New4.28voidLGet_next(LString&T)஻ÊḄget_next.Ò(p=T->succ;p->next=T;q=T;while(p->succ)(if(q==Tllp->data==q->data)(p=p->succ;q=q->succ;p->next=q;

46elseq=q->next;}//while}//LGet_next4.29LStrNode*LIndex_KMP(LStringS,LStringT,LStrNode*pos)஻ÊḄKMPᓛ_.Ò,Pᓛ_Ḅ✌ᢣ┐(p=pos;q=T->succ;while(p&&q){if(q==Tllp->chdata==q->chdata)(p=p->succ;q=q->succ;)elseq=q->next;}//whileif(!q)(for(i=l;i<=Strlen(T);i++)p=p->next;returnp;}஻Øᓛ_&⌕Ú[ḄᜮreturnNULL;}//LIndex_KMP4.30voidGet_LRepSub(StringtypeS)஻SḄᨬfÜḄZtfg(for(maxlen=0,i=l;imaxlen)஻Ø]T¬ØḄäfḄÜ(Irs1=j-k+1;lrs2=mrs1+i;maxlen=k;஻E~}//for

47}//forif(maxlen)printfC'LongestRepeatingSubstringlength:%d

48",maxlen);printf("Position1:%dPosition2:%d

49",lrsl,lrs2);}elseprintf("NoRepeatingSubstringfound!

50H);}//Get_LRepSubᑖ᪆:iD⊤"┯P”.4.ÒḄ56{èSḄué4S2ᔣn┯êo1Þ,2Þ,3Þ,…ìíS1ᓛ_᝞wᙠᨬfÜᑣîᯠðᙠ@AñØᵨòólrsl,lrs2,maxlenᩭ~}ØḄᨬfÜMZ,õMZtfg.⚪ö÷øù"Ü"{ᔲᐕûᨵÜümᑖ4.ÒᎷQᐕû.᝞þᐕû,ÿ◤ᙠforḄᩩk<=iᓽ.ᩖO(Strlen(S)A2).4.31voidGet_LPubSub(StringtypeS,StringtypeT)஻STḄᨬ!"ᐳ$%&!(if(S[0]>=T[0])(StrAssign(A,S);StrAssign(B,T);)else(StrAssign(A,T);StrAssign(B,S);}஻*ᓄ,-./ST0!Ḅ1A,02Ḅ1Bfor(maxlen=0,i=1-B[O];i?(jmin=1;jmax=i+B[0];}//BᨵABᑖᙠA:<Ḅ:Delseif(i>A[0]-B[0])(jmin=i;jmax=A[0];}//BᨵABᑖᙠA><Ḅ>Delse{jmin=i;jmax=i+B[0];}஻BᙠA:>E

51if(Afj]==B[j-i])k++;elsek=0;if(k>maxlen)lpsl=j-k+l;lps2=j-i-k+l;maxlen=k;)}//for}//forif(maxlen)(if(sroi>=Tro])(lpsS=lps1;lpsT=lps2;)else(lpsS=lps2;lpsT=lpsl;}஻WA,BḄ%&᧜YZS,TḄ%&printfC'LongestPublicSubstringlength:%d

52n,maxlen);printf(nPositioninS:%dPositioninT:%d

53M,lpsS,lpsT);}//ifelseprintf("NoRepeatingSubstringfound!

54H);}//Get_LPubSubᑖ᪆:⚪^_`S⚪L.aAḄRbH.ᵫ6A,BdK4L.efBKg⌕ᔣ>┯%.hij⌕ᔣ:┯%.GklKmᣵAopq.rB456AḄ%&KL,◤⌕ᓛQḄRḄ-"tuᔜK4L,wxὅz{|}G~ᳮ.ḄᩖHo(strlrn(s)*strlen(t))஺ᦪ⊤5.18voidRSh(intA[n],intk)஻ᦪAḄᐗ>k%.ᵨA(for(i=l;i<=k;i++)if(n%i==0&&k%i==0)p=i;஻nkḄᨬᜧ"ᦪpfor(i=0;i

55j=ll=(j+n-k)%n;}஻>AA[j]=temp;}//for}//RShᑖ᪆:⌕AḄᐗ>k%.ᑣAA[k],A[k]A[2k]……ᑮᨬZᑮA[0].ᯠhᨵᐰB¢£⚪.eᨵ¤ᨵḄᐗᙠf¥¦§ᨵ¨©£¥.hH¨ª«¥¬.ᑖ᪆.rnkḄᨬᜧ"ᦪp.⌕ᑖbG®V᡻°±.²Gkl³Aᐗ´¨ig¨>Aµ.¶h·¸⚪¹⌕.u²Hº,AḄᡠᨵᐗᑖbᜐᙠp“¾"☢.ÁÂ᝞ÄÅn=15,k=6,ᑣp=3.Aᩩ¾:A[0]->A[6],Aয->A[ফ,A[12]->A[3],A[3]->A[9],A[9]->A[0].ᩩ¾:A[l]->A[7],A[7]->A[13],A[13]->A[4],A[4]->A[10],A[10]->A[l].Èᩩ¾:Aফ->A[8],A[8]->A[14],A[14]->A[5],A[5]->A[11],A[11]->Aফ.ាÊËᡠᨵᐗ´>Aµ.ÌᯠÍÎᦪÏlÐ.ÑÒὅ4Ó±ÔÕÖ×H?MḄ.5.19voidGet_Saddle(intA[m][n])஻Ø▣AḄÚÛV(for(i=0;i

56A[%d][%d]=%d",i,j,A[i][j]);}}//for}//Get_Saddle5.20intexps[MAXSIZE];//expsᦪᵨ6àA⚗ḄᔜâᐗḄᢣᦪintmaxm,n;//maxmᢣäâᐗåᦪ,nᢣäAâᐗḄᨬæᢣᦪvoidPrint_Poly_Descend(int*a,intm)஻ᢥèéêëìímᐗî⚗tḄ⚗.ᔜ⚗ḄïᦪðÎ⌲᯿⚪¹⌕6móᦪ.ᦪḄᜮᢣ┐a

57maxm=m;for(i=m*n;i>=0;i--)஻ᢥèöµë.¤í÷Ḅᨬæ⚗µᦪmnGet_All(a,m,i,O);஻MNìíᡠᨵµᦪiḄ⚗}//Print_Poly_DescendvoidGet_All(int*a,intm,inti,intseq)஻⌴ùíᡠᨵiḄmzᯠᦪ(if(seq==maxm)Print_Nomial(a,exps);஻ðÎú.ìí×⚗else(min=i-(m-l)*n;஻rûᦪK¤Ü6minif(min<0)min=0;max=n0)printf("+");஻ᦪ&*'ᡭᓺ-.elseif(coef<0)printf("-");஻ᦪ&/'ᡭᓺ0.if(abs(coef)!=l)printf("%d",abs(coef))1஻2ᦪḄ3456&1'ᡭᓺᦪfor(i=0;il)printf("%d",exp[i]);஻ᦪ&1'(◤ᡭᓺ

58}//Print_Nomialᑖ᪆:<=>Ḅᐵ@ᙠA᝞Cᢥ᯿FGHIᔜ⚗.KLMᵨO⌴QRᦪᩭTᑮᡠᨵXYZ&iḄm[ᯠᦪ]&ᔜᐗḄᢣᦪ.^⌕ᐜ#`ᦪ&j,ᯠabTᑮᡠᨵXYZ&i-jḄm-1[ᯠᦪcdO.⌕efjḄ#5hijkᒕmm-1[ᯠᦪnoTᑮ,ᡠq6nrAi-(m-l)*maxns6nᜧAi.^⌕TᑮOuᔠᩩxḄᦪcyqᙠz⚗{ᦪḄᦪ|}4~Ḅ⚗ḄᦪḄ!",ᙠᦪ6&0'4~Ḅ⚗.5.21voidTSMatrix_Add(TSMatrixA,TSMatrixB,TSMatrix&C)஻ᐗ⊤Ḅ▣->(C.mu=A.mu;C.nu=A.nu;C.tu=O;pa=l;pb=l;pc=l;for(x=l;x<=A.mu;x++)஻4▣Ḅ—dd>(while(A.datafpa].iB.data[pb].j)(C.data[pc].i=x;C.datafpc].j=B.data[pb].j;C.data[pc].e=B.data[pb].e;pb++;pc++;)elseC.data[pc].i=x;C.datafpc].j=A.data[pa].j;

59C.data[pc].e=A.data[pa].epa++;pc++;)}//whilewhile(A.data[pa]==x)//JSAAᒕmḄᐗ(`xd)(C.data[pc].i=x;C.datafpc].j=A.data[pa].j;C.data[pc].e=A.data[pa].epa++;pc++;)while(B.data[pb]==x)஻ᐭBᒕmḄᐗ(`xd)(C.datafpc].i=x;C.data[pc].j=B.data[pb].j;C.datafpc],e=B.data[pb].e;pb++;pc++;)}//forC.tu=pc;}//TSMatrix_Add5.22voidTSMatrix_Addto(TSMatrix&A,TSMatrixB)஻ᐗ▣BUA(for(i=1;i<=A.tu;i++)A.data[MAXSIZE-A.tu+i]=A.data[i];/AḄᡠᨵᐗᑮq!"pa=MAXSIZE-A.tu+l;pb=1;pc=1;for(x=l;x<=A.mu;x++)஻4▣Ḅdd->(while(A.data[pa].i

60}//ifelseif(A.data[pa].j>B.data[pb].j){A.data[pc].i=x;A.data[pc].j=B.data[pb].j;A.data[pc].e=B.data[pb].e;pb++;pc++;)else{A.data[pc].i=x;A.data[pc].j=A.data[pa].j;A.data[pc].e=A.data[pa].epa++;pc++;)}//whilewhile(A.data[pa]==x)஻ᐭAᒕmḄᐗ(`xd)(A.data[pc].i=x;A.data[pc].j=A.data[pa].j;A.data[pc].e=A.data[pa].epa++;pc++;)while(B.datafpb]==x)//fflABᒕmḄᐗ(`xd)(A.datafpc].i=x;A.data[pc].j=B.data[pb].j;A.datafpc].e=B.data[pb].e;pb++;pc++;}}//forA.tu=pc;for(i=A.tu;i

61intmu,nu,tu;}DSMatrix;஻£ᐗ▣¦§StatusDSMatrix_Locate(DSMatrixA,inti,intj,int&e)஻£ᐗ▣ḄᐗA[i][j]Ḅ5e(fbr(s=A.cpot[i];s

62typedefstruct{intmu,nu;intelem[MAXSIZE];boolmap[mu][nu];}BMMatrix;஻ᵨ!³⊤Ḅ▣¦§voidBMMatrix_Add(BMMatrixA,BMMatrixB,BMMatrix&C)஻!³▣Ḅ->(C.mu=A.mu;C.nu=A.nu;pa=l;pb=l;pc=l;for(i=0;iright)஻⌲º»ᔊd¹⊤printf("%d%d%d

63",i,p->j,p->e;}//Print_OLMatrix

645.27voidOLMatrix_Add(OLMatrix&A,OLMatrixB)஻ᓝ¸¹⊤⊤Ḅ▣BA(for(j=l;j<=A.nu;j++)cp[j]=A.chead[j];஻ᔣ¢cpᑡ2½ᨬaᐗḄᢣ┐for(i=1;iv=A.mu;i++)(pa=A.rhead[i];pb=B.rhead[i];pre=NULL;while(pb)(if(pa==NULLIIpa->j>pb->j)஻Àᐭ´²(p=(OLNode*)malloc(sizeof(OLNode));if(!pre)A.rhead[i]=p;elsepre->right=p;p->right=pa;pre=p;p■:>i=i;p>j=pb->j;p>e£pb->e;//ᐭd¹⊤if(!A.chead[p->j])(A.chead[p->j]=p;p->down=NULL;)else(while(cpfp->j]->down)cpfp->j]=cp[p->j]->down;p->down=cp[p->j]->down;cp[p->j]->down=p;}cp[p■Â]=P1஻ᐭᑡ¹⊤}//ifelseif(pa->jj)(pre=pa;pa=pa->right;}//paÃÄelseif(pa->e+pb->e)(pa->e+=pb->e;pre=pa;pa=pa->right;pb=pb->right;)஻ÅÆ-else

65if(!pre)A.rhead[i]=pa->right;elsepre->right=pa->right;p=pa;pa=pa->right;//Çd¹⊤È◀if(A.chead[p->j]==p)A.chead[p->j]=cp[p->j]=p->down;elsecp[p->j]->down=p->down;஻Çᑡ¹⊤ᑤ◀free(p);}//else}//while}//for}//OLMatrix_Addᑖ᪆:<⚪ḄᐹÌÍÎᙠÏ<ᨵÐÑḄÒÓÔÕ.5.28voidMPList_PianDao(MPList&L)஻4Ö×⊤´᪀Ḅzᐗz⚗{`ᐗḄÙÚ(for(p=L->hp->tp;p&&p->exp;pre=p,p=p->tp){if(p->tag)Mul(p->hp,p->exp);elsep->coef*=p->exp;//ᢣᦪÛᙠ<´²ᡈᐸÝ´²p->exp—;}pre->tp=NULL;if(p)free(p);஻ᑤ◀ynᙠḄÞᦪ⚗}//MPList_PianDaovoidMuKMPList&L,intx)஻⌴Q=>,4zᐗz⚗{LÛqx(for(p=L;p;p=p->tp)(if(!p->tag)p->coef*=x;elseMul(p->hp,x);)}//Mul5.29voidMPList_Add(MPListA,MPListB,MPList&C)஻Ö×⊤´᪀Ḅz⚗{-Ḅ⌴Q=>C=(MPLNode*)malloc(sizeof(MPLNode));if(!A->tag&&!B->tag)஻ß⚗yÅÆ-

66C->coef=A->coef+B->coef;if(!C->coef){free(C);C=NULL;)}//ifelseif(A->tag&&B->tag)஻àz⚗{-p=A;q=B;pre=NULL;while(p&&q)(if(p->exp==q->exp)(C=(MPLNode*)malloc(sizeof(MPLNode));C>>exp=p->exp;MPList_Add(A->hp,B->hp,C->hp);pre->tp=C;pre=C;p=p->tp;q=q->tp;)elseif(p->exp>q->exp)(C=(MPLNode*)malloc(sizeof(MPLNode));C->exp=p->exp;C->hp=A->hp;pre->tp=C;pre=C;p=p->tp;)else(C=(MPLNode*)malloc(sizeof(MPLNode));C>>exp=q->exp;C->hp=B->hp;pre->tp=C;pre=C;q=q->tp;)}//whilewhile(p)(C=(MPLNode*)malloc(sizeof(MPLNode));C->exp=p->exp;C->hp=p->hp;pre->tp=C;pre=C;

67p=p->tp;)while(q)(C=(MPLNode*)malloc(sizeof(MPLNode));C->exp=q->exp;C>>hp=q->hp;pre->tp=C;pre=C;q=q->tp;}஻ᐸâº⚗ᑖã-$ᑮÀḄz⚗{ᳮå`£æz⚗{-⚪}//elseifelseif(A->tag&&!B->tag)஻z⚗{ZÞᦪ⚗-(x=B->coef;for(p=A;p->tp->tp;p=p->tp);if(p->tp->exp==O)p->tp->coef+=x;஻2z⚗{çᨵÞᦪ⚗'-Þᦪ⚗if(!p->tp->coef)(free(p->tp);p->tp=NULL;)else(q=(MPLNode*)malloc(sizeof(MPLNode));q->coef=x;q->exp=0;q->tag=O;q->tp=NULL;p->tp=q;}஻ᔲᑣÀêÞᦪ⚗â}//elseifelse(x=A->coef;for(p=B;p->tp->tp;p=p->tp);if(p->tp->exp==O)p->tp->coef+=x;if(!p->tp->coef){free(p>>tp);p->tp=NULL;)else(q=(MPLNode*)malloc(sizeof(MPLNode));q->coef=x;q->exp=0;q->tag=O;q->tp=NULL;

68p->tp=q;)}//else}//MPList_Add5.30intGList_Getdeph(GListL)஻Ö×⊤ëìḄ⌴Q=>(if(!L->tag)return0;஻ßëì&0elseif(!L)return1;஻í⊤ëì&1m=GList_Getdeph(L->ptr.hp)+1;n=GList_Getdeph(L->ptr.tp);returnm>n?m:n;}//GList_Getdeph5.31voidGList_Copy(GListA,GList&B)஻îᑴÖ×⊤Ḅ⌴Q=>(if(!A.>tag)஻2´²&ß'ÅÆîᑴ(B->tag=0;B->atom=A->atom;)else஻2´²&ß⊤'{B->tag=l;if(A->ptr.hp)(B->ptr.hp=malloc(sizeof(GLNode));GList_Copy(A->ptr.hp,B->ptr.hp);)஻îÀ⊤ᜮif(A>>ptr.tp)(B->ptr.tp=malloc(sizeof(GLNode));GList_Copy(A->ptr.tp,B->ptr.tp);}//îᑵ⊤}//else}//GList_Copy5.32intGList_Equal(GListA,GListB)஻ᑨõÖ×⊤AZBöᔲöᑣ÷1,ᔲᑣ÷0

69{஻Ö×⊤yᑖøùúûif(!A&&!B)return1;஻í⊤öḄif(!A->tag&&!B->tag&&A->atom==B->atom)return1;஻ßḄ5if(A->tag&&B->tag)if(GList_Equal(A->ptr.hp,B->ptr.hp)&&GList_Equal(A->ptr.tp,B->ptr.tp))return1;஻⊤ᜮ⊤return0;}//GList_Equal5.33voidGList_PrintElem(GListA,intlayer)஻⌴QÖ×⊤Ḅß7ᐸᡠᙠüºlayer⊤2½üº(if(!A)return;if(!A->tag)printf("%d%d

70",A->atom,layer);else{GList_PrintElem(A->ptr.hp,layer+l);GList_PrintElem(A->ptr.tp,layer);஻ef⊤ý⊤öâüº)}//GList_PrintElem5.34voidGList_Reverse(GListA)஻⌴Q⌮ÿ⊤A(GLNode*ptr[MAX_SIZE];if(A->tag&&A->ptr.tp)஻A⊤◤⌮(for(i=0,p=A;p;p=p->ptr.tp,i++)(if(p->ptr.hp)GList_Reverse(p->ptr.hp);//⌮ᔜ⊤ptr[i]=p->ptr.hp;}for(p=A;p;p=p->ptr.tp)஻ᢥ⌮᣸ᑡᔜ⊤Ḅp->ptr.hp=ptr[-i];}}//GList_Reverse5.35StatusCreate_GList(GList&L)஻᪷ᐭ!⊤L,"#$ᢣ┐scanf("%c",&ch);

71if(ch=='')(L=NULL;scanf("%c",&ch);if(ch!=')')returnERROR;returnOK;)L=(GList)malloc(sizeof(GLNode));L->tag=l;if(isalphabet(ch))஻ᐭ'()(p=(GList)malk)c(sizeof(GLNode));஻!+⊤ᜮp->tag=0;p->atom=ch;L->ptr.hp=p;)elseif(ch==(,)Create_GList(L->ptr.hp);஻!⊤+⊤ᜮelsereturnERROR;scanf("%cn,&ch);if(ch==,),)L->ptr.tp=NULL;elseif(ch==7)Create_GList(L->ptr.tp);஻!⊤elsereturnERROR;returnOK;}//Create_GListᑖ᪆:0⚪2345678.5.36voidGList_PrintList(GListA)஻ᢥ᪗;<=>⊤(if(!A)printf("()”);஻⊤elseif(!A->tag)printf("?d”,A->atom);஻else(printf("(“);fbr(p=A;p;p=p->ptr.tp)(GList_PrintList(p->ptr.hp);if(p->ptr.tp)printf(",");஻@ᨵ⊤◤⌕ᡭᓺ⌹F}printfC')");}//else}//GList_PrintList5.37

72voidGList_DelElem(GList&A,intx)஻G⊤AHᑤ◀ᡠᨵLxḄif(A&&A->ptr.hp){if(A->ptr.hp->tag)GList_DelElem(A->ptr.hp,x);elseif(!A->ptr.hp->tag&&A->ptr.hp->atom==x)(q=A;A=A->ptr.tp;஻ᑤMᐗOLxḄ⊤ᜮfree(q);GList_DelElem(A,x);if(A&&A->ptr.tp)GList_DelElem(A->ptr.tp,x)P}//GList_DelElem5.39voidGList_PrintElem_LOrder(GListA)஻ᢥQ>⊤AHḄᡠᨵᐗO(InitQueue(Q);for(p=L;p;p=p->ptr.tp)EnQueue(Q,p);while(!QueueEmpty(Q))(DeQueue(Q,r);if(!r->tag)printf(H%d",r->atom);elsefor(r=r->ptr.hp;r;r=r->ptr.tp)EnQueue(Q,r);}//while}//GList_PrintElem_LOrderᑖ᪆:QRᔊḄT⚪UVWX'YZ[ᑡᩭ]ᡂḄ,`aG[ᜮb>VcᐗOḄdefgVQḄhiᐭ[.j'QRᔊḄk02l.mno᪛qrs᪛6.33intIs_Descendant_C(intu,intv)஻ᙠhuvw᪀yᑨ{u'ᔲvḄ}U'ᑣ#$1,ᔲᑣ#$0(if(u==v)return1;else

73if(L[v])if(Is_Descendant(u,L[v]))return1;if(R[v])if(Is_Descendant(u,R[v]))return1;஻j'c⌴)return0;}//Is_Descendant_C6.34intIs_Descendant_P(intu,intv)஻ᙠuvw᪀yᑨ{u'ᔲvḄ}U'ᑣ#$1,ᔲᑣ#$0(for(p=u;p!=v&&p;p=T[p]);if(p==v)return1;elsereturn0;}//Is_Descendant_P6.35jV⚪᪷0◤⌕ᑏU456:c᦮ᦪḄL'Ḅ.6.36intBitree_Sim(BitreeBl,BitreeB2)஻ᑨ{᪛'ᔲḄ⌴(if(!Bl&&!B2)return1;elseif(B1&&B2&&Bitree_Sim(B1->lchild,B2->lchild)&&Bitree_Sim(B1->rchild,B2->rchild))return1;elsereturn0;}//Bitree_Sim6.37voidPreOrder_Nonrecursive(BitreeT)஻ᐜRᔊrs᪛Ḅ⌴(InitStack(S);Push(S,T);஻᪷ᢣ┐᪘while(!StackEmpty(S))while(Gettop(S,p)&&p)

74visit(p->data);push(S,p->lchild);)஻ᔣᑮᜮpop(S,p);if(!StackEmpty(S))(pop(S,p);push(S,p>rchild);஻ᔣV)}//while}//PreOrder_Nonrecursive6.38typedefstruct{BTNode*ptr;enum{0,1,2}mark;}PMType;஻ᨵmarkḄwᢣ┐+voidPostOrder_Stack(BiTreeT)஻6Rᔊrs᪛Ḅ⌴Uᵨ᪘(PMTypea;InitStack(S);//SḄᐗOPMType+Push(S,{T,0});஻᪷wᐭ᪘while(!StackEmpty(S))(Pop(S,a);switch(a.mark)(case0:Push(S,{a.ptr,l});஻¡ᦋmarkif(a.ptr->lchild)Push(S,{a.ptr->lchikl,O});஻£T᪛break;case1:Push(S,{a.ptr,2});஻¡ᦋmarkif(a.ptr->rchild)Push(S,{a.ptr>rchild,O});஻£T᪛break;case2:visit(a.ptr);஻£TwU#$)}//while}//PostOrder_Stackᑖ᪆:¤¥ᑖa¦᪘Ḅdᜐᳮ©=Uᙠᚮ᪘H«¬Ucmark,mark=0⊤®®£T¯w,mark=l⊤᪛ᜐᳮw°#$,mark=2⊤᪛ᜐᳮw°#$.`a᪷᪘⚔ᐗOḄmarkL²³´µ¶·¸.

756.39typedefstruct{intdata;EBTNode*lchild;EBTNode*rchild;EBTNode"parent;enum{0,1,2}mark;}EBTNode,EBitree;//ᨵmarkqᢣ┐Ḅrs᪛w+voidPostOrder_Nonrecursive(EBitreeT)//6Rᔊrs᪛Ḅ⌴,ᵨ᪘P=T;while(p)switch(p->mark)(case0:p->mark=l;if(p->lchild)p=p>lchild;஻£T᪛break;case1:p->mark=2;if(p->rchild)p=p->rchild;஻£T᪛break;case2:visit(p);p->mark=0;஻ឮºmarkLP=p->parent;஻#$w)}//PostOrder_Nonrecursiveᑖ᪆:0⚪23»y•⚪]ᐰdU@¦wḄmarkL'vuᙠwHḄU¾'ᨚuᙠᚮ᪘H,ᡠÀ£T]Á6⌕Âmarkឮº0,ÀᜓgVaRᔊ.6.40typedefstruct{intdata;PBTNode*lchild;PBTNode*rchild;PBTNode"parent;}PBTNode,PBitree;஻ᨵᢣ┐Ḅrs᪛w+voidInorder_Nonrecursive(PBitreeT)஻Ä᪘⌴Rᔊᨵᢣ┐Ḅrs᪛p=T;

76while(p->lchild)p=p->lchild;஻ᔣÅ!Çᜮwhile(p)(visit(p);if(p->rchikl)஻ÈÉH6Ê:ᨵ᪛(p=p->rchild;while(p->lchild)p=p->lchild;஻6ÊË'ᙠ᪛Hᔣᑮᜮ)elseif(p->parent->lchild==p)p=p->parent;//ÌÍ'Ḅh6ÊË'else(p=p->parent;while(p->parent&&p->parent->rchild==p)p=p->parent;p=p->parent;}஻ÌÍ'Ḅh6ÊË'ᔣy#$Ïᑮ⍗ᑮÌÍ'ᙠᐸ᪛HḄἔᐜ}//while}//Inorder_Nonrecursive6.41intc,k;஻jÓekqÔᦪᘤc¸ᐰÖ×ØᜐᳮvoidGet_PreSeq(BitreeT)஻ÙᐜᑡkḄwḄL(if(T)(C++;஻`£TVc᪛Ḅ᪷XÚÛÜFÔᦪᘤ¬1if(c==k)(printf("Valueis%d

77",T->data);exit(1);)else(Get_PreSeq(T->lchild);஻ᙠ᪛HÝÉGet_PreSeq(T->rchild);//ᙠ᪛HÝÉ)}//if}//Get_PreSeqmain()

78scanf("%d",&k);c=0;஻ᙠÞßᦪHàᵨÜU⌕áÔᦪᘤâãL0Get_PreSeq(T,k);}//main6.42intLeafCount_BiTree(BitreeT)஻Ùrs᪛HäwḄᦪå(if(!T)return0;஻᪛æᨵäelseif(!T->lchild&&!T->rchild)return1;஻äwelsereturnLeafLCount(T->lchild)+Leaf_Count(T->rchild);஻᪛Ḅäᦪçèy᪛Ḅäᦪ}//LeafCount_BiTree6.43voidBitree_Revolute(BitreeT)஻éᣚᡠᨵwḄ᪛(T->lchildv->T->rchild;஻éᣚ᪛if(T->lchild)Bitree_Revolute(T->lchild);if(T->rchild)Bitree_Revolute(T->rchild);஻᪛ëᑖìéᣚᔜÌḄ᪛}//Bitree_Revolute6.44intGet_Sub_Depth(BitreeT,intx)஻Ùrs᪛HÀLxḄw᪷Ḅ᪛íî(if(T->data==x){printf("?d

79”,Get_Depth(T));஻Éᑮ¤LxḄwUÙᐸíîexit1;)else(if(T->lchild)Get_Sub_Depth(T->lchild,x);if(T->rchild)Get_Sub_Depth(T->rchild,x);஻ᙠ᪛HÊÈÉ)}//Get_Sub_DepthintGet_Depth(BitreeT)஻Ù᪛íîḄ⌴if(!T)return0;

80elsem=Get_Depth(T->lchild);n=Get_Depth(T->rchild);return(m>n?m:n)+l;)}//Get_Depth6.45voidDel_Sub_x(BitreeT,intx)஻ᑤ◀ᡠᨵÀᐗOx᪷Ḅ᪛(if(T->data==x)Del_Sub(T);//ᑤ◀ï᪛else(if(T->lchild)Del_Sub_x(T->lchild,x);if(T->rchild)Del_Sub_x(T->rchild,x);//ᙠ᪛HÊÝÉ}//else}//Del_Sub_xvoidDel_Sub(BitreeT)//ᑤ◀᪛T(if(T->lchild)Del_Sub(T->lchild);if(T->rchild)Del_Sub(T->rchild);free(T);}//Del_Sub6.46voidBitree_Copy_Nonrecursive(BitreeT,Bitree&U)஻⌴ºᑴrs᪛(InitStack(Sl);InitStack(S2);push(Sl,T);஻᪷ᢣ┐᪘U=(BTNode*)malloc(sizeof(BTNode));U->data=T->data;q=U;push(S2,U);while(!StackEmpty(S))(while(Gettop(S1,p)&&p)(q->lchild=(BTNode*)malloc(sizeof(BTNode));q=q->lchild;q->data=p->data;push(Sl,p->lchild);push(S2,q);)஻ᔣᑮᜮ

81pop(Sl,p);pop(S2,q);if(!StackEmpty(S1))(pop(Sl,p);pop(S2,q);q->rchild=(BTNode*)malloc(sizeof(BTNode));q=q->rchild;q->data=p->data;push(Sl,p->rchild);஻ᔣVpush(S2,q);)}//while}//BiTree_Copy_Nonrecursiveᑖ᪆:0⚪ḄòóG6.37ᦋᑏ¾ᩭ.6.47voidLayerOrder(BitreeT)஻QRᔊrs᪛(InitQueue(Q);஻!ôõ¸[ᑡEnQueue(Q,T);while(!QueueEmpty(Q))(DeQueue(Q,p);visit(p);if(p->lchild)EnQueue(Q,p->lchild);if(p->rchild)EnQueue(Q,p->rchild);)}//LayerOrder6.48intfound=FALSE;Bitree*Find_Near_Ancient(BitreeT,Bitreep,Bitreeq)஻Ùrs᪛THwpqqḄᨬ÷ᐳdἔ¬(Bitreepathp[100],pathq[100]஻ÄôcùZᦪúᨚuG᪷ᑮp,qḄ3ûFindpath(T,p,pathp,O);found=FALSE;Findpath(T,q,pathq,O);஻ÙG᪷ᑮp,qḄ3ûüᙠpathpqpathqHfor(i=0;pathp[i]==pathq[i]&&pathp[i];i++);஻ÝÉᩩ3ûyᨬ6,cdwreturnpathp[-i];}//Find_Near_Ancient

82voidFindpath(BitreeT,Bitreep,Bitreepath[],inti)஻ÙGTᑮp3ûḄ⌴(if(T==p)(found=TRUE;return;஻Éᑮ)path[i]=T;//Üwuᐭ3ûif(T->lchild)Findpath(T->lchild,p,path,i+1);//ᙠ᪛HÊÈÉif(T->rchild&&!found)Findpath(T->rchild,p,path,i+l);஻ᙠ᪛HÊÈÉif(!found)path[i]=NULL;஻$þ}//Findpath6.49intIsFull_Bitree(BitreeT)஻ᑨ{rs᪛'ᔲ]ᐰrs᪛U'ᑣ#$1,ᔲᑣ#$0(InitQueue(Q);flag=0;EnQueue(Q,T);஻!ôõ¸[ᑡwhile(!QueueEmpty(Q))(DeQueue(Q,p);if(!p)flag=l;elseif(flag)return0;else(EnQueue(Q,p->lchild);EnQueue(Q,p->rchild);஻ÿᔲᐭᑡ}}//whilereturn1;}//IsFull_Bitreeᑖ᪆:⚪ᔊḄᩭ.6.47!"#$%&'ᦋ,*+,-./ᔲᨵ12ᐭᑡ.3᪵,᪛6ᐰ89᪛:ᔊ:;ᑮ%&=>Ḅ*ᒹ@ᢣ┐Ḅᑡ.CDᑣᑡFG@ᨵᢣ┐.6.50StatusCreateBitree_Triplet(Bitree&T)஻IᐭJᐗLMN89᪛(if(getchar()!='A)returnERROR;T=(BTNode*)malloc(sizeof(BTNode));p=T;p->data=getchar();getchar஺;஻RSTUVW

83InitQueue(Q);EnQueue(Q,T);while((parent=getchar())!=A&&(child=getchar())&&(side=getchar()))(while(QueueHead(Q)!=parent&&!QueueEmpty(Q))DeQueue(Q,e);if(QueueEmpty(Q))returnERROR;஻XᢥIᐭp=QueueHead(Q);q=(BTNode*)malloc(sizeof(BTNode));if(side==,L,)p->lchild=q;elseif(side==,R,)p->rchild=q;elsereturnERROR;஻Z[*\]q->data=child;EnQueue(Q,q);)returnOK;}//CreateBitree_Triplet6.51StatusPrint_Expression(BitreeT)஻ᢥ᪗_`[Ia89᪛bcḄ⊤e[(if(T->dataVf)printf(M%cn,T->data);elseif(T->datah#W){if(!T->lchildll!T->rchild)returnERROR;஻Z[┯jif(T->lchild->datah#W&&T>lchild>datakᐜmnoT->data)(printf("(“);if(!Print_Expression(T->lchild))returnERROR;printf(u)M);)஻qrᙠtuvwx⌕z{|elseif(!Print_Expression(T->lchild))returnERROR;if(T->rchild->datah#W&&T->rchild->datakᐜmnoT->data)(printf("(“)}if(!Print_Expression(T->rchild))returnERROR;printf(")")})elseif(!Print_Expression(T->rchild))returnERROR;)elsereturnERROR;஻~VWreturnOK;}//Print_Expression6.52

84typedefstruct{BTNodenode;intlayer;}BTNRecord;஻ᒹ@./ᡠᙠḄintFanMao(BitreeT)஻%89᪛Ḅ""(intcountd;//countᦪLb%Ḅ./ᦪInitQueue(Q);//QḄᐗBTNRecordEnQueue(Q,{T,0});while(!QueueEmpty(Q))(DeQueue(Q,r);count[r.layer]++;if(r.node->lchild)EnQueue(Q,{r.node->lchild,r.layer+1});if(r.node->rchild)EnQueue(Q,{r.node->rchild,r.layer+1});)஻ᑭᵨᔊᩭᔜḄ./ᦪh=r.layer;஻ᨬ%&ᑡᐗᡠᙠ᪛Ḅfor(maxn=count[0],i=l;count[i];i++)if(count[i]>maxn)maxn=count[i];஻ᨬᜧ./ᦪreturnh*maxn;}//FanMaoᑖ᪆:᝞*ᐕᵨᦪL¡ᙠᔊḄ¢:aᨬᜧ./ᦪ`[£G¤ᩖ%¦§¨ᑏaᩭᔩ«6.53intmaxh;StatusPrintpath_MaxdepthS1(BitreeT)஻¬o᪛®•Ḅᨬ☠1Ḅ./(Bitreepathd;maxh=Get_Depth(T);//Get_Depth±ᦪ²6.44if(maxh<2)returnERROR;஻³Wᔠᩩ¶./Find_h(T,l);returnOK;}//Printpath_MaxdepthS1voidFind_h(BitreeT,inth)஻·¸¬maxh-1Ḅ./(path[h]=T;if(h==maxh-l)(for(i=1;pathfi];i++)printf(n%cn,path[i]->data);exit;஻ᡭᓺIa»¼

85elseif(T->lchild)Find_h(T->lchild,h+1);if(T->rchild)Find_h(T->rchild,h+1);)path[h]=NULL;஻½¾}//Find_h6.54StatusCreateBitree_SqList(Bitree&T,SqListsa)஻᪷ÀÁbc.᪀MN89Ã⊤(Bitreeptr[sa.last+l];஻ᦪLcbsaFᔜ./ÄÅḄ᪛ᢣ┐if(!sa.last)(T=NULL;//᪛return;)ptr[l]=(BTNode*)malloc(sizeof(BTNode));ptr[l]->data=sa.elem[1];஻MN᪛᪷T=ptr[l];for(i=2;i<=sa.last;i++)(if(!sa.elem[i])returnERROR;஻Á┯jptr[i]=(BTNode*)malloc(sizeof(BTNode));ptr[i]->data=sa.elem[i];j=i/2;஻¸ᑮ./iḄÆÇjif(i-j*2)ptr[j]->rchild=ptr[i];//ijḄ2elseptr[j]->lchild=ptr[i];//ijḄ1)returnOK;}//CreateBitree_SqList6.55intDescNum(BitreeT)஻᪛./TḄÈÉᦪÊᐭDescNumËFÌͽᦪ(if(!T)return-1;elsed=(DescNum(T-ுlchild)+DescNum(T->rchild)+2);஻ÏÐ[T->DescNum=d;returnd;}//DescNumᑖ᪆:Ï:ѤᩖO(n),n᪛./Éᦪ.qr:$¨ᵨ%&%ḄÐ[ÏÈᦪÒᡠ,Tᢣ┐:,⌕ͽ-1Ó*0.

866.56BTNode*PreOrder_Next(BTNode*p)஻ᙠᐜÔÕÖ89᪛F׸./pḄᐜÔÌͽᢣ┐7(if(p->lchild)returnp->lchild;elsereturnp->rchild;}//PreOrder_Nextᑖ᪆:ÉÙ;*G3uÚᓫ.*ÜÝᳮ┯$«6.57BitreePostOrder_Next(Bitreep)஻ᙠÔÕÖ89᪛F׸./pḄÔ,Ìͽᢣ┐(if(p->rtag)returnp->rchild;//pᨵÔÕÖelseif(!p->parent)returnNULL;//p᪷./elseif(p==p->parent->rchild)returnp->parent;//p2elseif(p==p->parent->lchild&&p->parent->rtag)returnp->parent;//p1ßÆÇàᨵ2else//p1ßÆÇᨵ2{q=p->parent->rchild;while(q->Ichildll!q->rtag)(if(q->lchild)q=q->lchild;elseq=q->rchild;}஻ãpḄÆÇḄ2ᔣxåᑮæreturnq;}//else}//PostOrder_Next6.58StatusInsert_BiThrTree(BiThrTree&T,BiThrTree&p,BiThrTree&x)஻ᙠFÕÖ89᪛TḄ./pxçᐭ᪛x(if(p->ltag)//x#pḄ1᪛(s=p->lchild;஻spḄ-èp->ltag=Link;p->lchild=x;q=x;while(q->lchild&&!q->ltag)q=q->lchild;q->lchild=s;஻¸ᑮ᪛FḄᨬé./Ì'ᦋᐸ-èᢣᔣs

87x->rtag=Thread;x->rchild=p;//xḄÔᢣᔣp}elseif(p->rtag)//x#pḄ2᪛(s=p->rchild;//spḄÔp->rtag=Link;p->rchild=x;q=x;while(q->lchild&&!q->ltag)q=q->lchild;q->]chikl=p;஻¸ëljV᪛FḄᨬ1./Ì'ᦋᐸ-èᢣᔣpx->rtag=Thread;x->rchild=s;//xḄÔᢣᔣpḄÔ)else//x#pḄ1᪛,pḄ1᪛#xḄ2᪛(s=p->lchild;t=s;while(t->lchild&&!t->ltag)t=t->lchild;u=t->lchild;஻¸ᑮpḄ1᪛Ḅᨬ1⁚/tí-èup->lchild=x;x->rtag=Link;x->rchild=s;//x#pḄ1᪛,pḄ1᪛s#xḄ2᪛t->lchild=x;q=x}while(q->lchild&&!q->ltag)q=q->lchild;q->lchild=u;//¸ëî᪛FḄᨬ1./Ì'ᦋᐸ-èᢣᔣu}returnOK;}//Insert_BiThrTree6.59voidPrint_CSTree(CSTreeT)஻IaᐘðÃ⊤⊤ñḄ᪛TḄᔜò(for(child=T->firstchild;child;child=child->nextsib)(printf("(%c,%c),",T->data,child->data);Print_CSTree(child);)}//Print_CSTree6.60intLeafCount_CSTree(CSTreeT)஻ᐘðÃ⊤⊤ñḄ᪛TḄóᦪÒ

88if(!T->firstchild)return1;஻ó./elsecount=0;for(child=T->firstchild;child;child=child->nextsib)count4-=LeafCount_CSTree(child);returncount;஻ᔜ᪛ḄóᦪDí)}//LeafCount_CSTree6.61intGetDegree_CSTree(CSTreeT)஻ᐘðÃ⊤⊤ñḄ᪛TḄ(if(!T->firstchild)return0;஻᪛else{degree=0;for(p=T->firstchild;p;p=p->nextsib)degree++;஻ô./Ḅfor(p=T->firstchild;p;p=p->nextsib)(d=GetDegree_CSTree(p);if(d>degree)degree=d;஻./ḄḄᨬᜧõ)returndegree;}//else}//GetDegree_CSTree6.62intGetDepth_CSTree(CSTreeT)஻ᐘðÃ⊤⊤ñḄ᪛TḄ¬(if(!T)return0;஻᪛else(for(maxd=0,p=T->firstchild;p;p=p->nextsib)if((d=GetDepth_CSTree(p))>maxd)maxd=d;஻᪛Ḅᨬᜧ¬returnmaxd+1;)}//GetDepth_CSTree6.63intGetDepth_CTree(CTreeA)஻Ã⊤⊤ñḄ᪛AḄ¬

89returnSubDepth(A.r);}//GetDepth_CTreeintSubDepth(intT)஻᪛TḄ¬(if(!A.nodes[T].firstchild)return1;for(sd=l,p=A.nodesfT].firstchild;p;p=p->next)if((d=SubDepth(p->child))>sd)sd=d;returnsd+1;}//SubDepth6.64intGetDepth_PTree(PTreeT)஻ÆÇ⊤⊤ñḄ᪛TḄ¬(maxdep=O;for(i=0;i=0;j=T.nodesfj].parent)dep++;஻%&./Ḅ¬if(dep>maxdep)maxdep=dep;)returnmaxdep;}//GetDepth_PTree6.65charPredönd;஻Ꮇø-ùUíFùUúûᑖüUcbᙠᦪLPreíInFBitreeBuild_Sub(intPre_Start,intPre_End,intIn_Start,intIn_End)஻ᵫ᪛Ḅ-íFᑡMNᐸ89Ã⊤(sroot=(BTNode*)maHoc(sizeof(BTNode));஻M᪷sroot->data=Pre[Pre_Start];for(i=In_Start;In[i]!=sroot->data;i++);஻ᙠFᑡF׸᪛᪷leftlen=i-In_Start;rightlen=In_End-i;஻Ï12᪛Ḅᜧþif(leftlen)(lroot=Build_Sub(Pre_Start+l,Pre_Start+leftlenJn_Start,In_Start4-leftlen-l);sroot->lchild=lroot;}஻M1᪛qrÿᦪ⊤Ḅif(rightlen)rroot=Build_Sub(Pre_End-rightlen+l,Pre_EndJn_End-rightlen+l,In_End);

90sroot->rchild=rroot;}஻᪛ᦪ⊤Ḅreturnsroot;//᪛᪷}//Build_Submain()Build_Sub(l,n,l,n);஻ᵨᦪ,n᪛ᦪᑖ᪆:ᑭᵨ"#᪵%&ឋ(ᓽ%*᪛ᙠ,-./--ᑡ/ᡠᓰḄ34567Ḅ.9:;<=ᵨ>?᪗.AB?᪗ᩭDE%*᪛.Pre_Start,Pre_End,In_Start.In_EndᑖFᢣH᪛ᙠ,--ᑡIḄ>?᪗,AB?᪗.ᙠ/--ᑡIḄ>.AB?᪗.6.66typedefstruct{CSNode*ptr;CSNode*lastchild;}NodeMsg;//Ḅᢣ┐.ᐸᨬM%&NḄᢣ┐StatusBuild_CSTree_PTree(PTreeT)஻ᵫ᪛TḄPQ⊤᪀⌼ᐸNᐘUV⊤(NodeMsgTree[MAXSIZE];for(i=0;idata=T.node[i].data;஻if(T.nodes[i].parent>=0)஻W5᪛᪷(j=T.nodesfi].parent;஻⌕YPQ⊤Z[5ᢥ]-^_if(!(Tree[j][astchikl))஻PQ`,abᨵNTree[j].ptr->flrstchild=Tree[i].ptr;//ᡂPQḄe%&Nelse஻PQfgᨵ"NTree[j].lastchild->nextsib=Treeh].ptr;஻ᡂPQᨬM%&NḄ?%•&ᐘUTree[j].lastchild=Tree[i].ptr;஻ᡂPQḄᨬM%&N}//if}//for}//Build_CSTree_PTree6.67

91typedefstruct{chardata;CSNode*ptr;CSNode*lastchild;}Nodeinfo;஻ᦪkᢣ┐.ᨬM•&NḄᢣ┐StatusCreateCSTree_Duplet(CSTree&T)஻lᐭnᐗpq᪛ḄNᐘUV⊤(NodeinfoTreed;n=lrk=0;if(getchar()!=A)returnERROR;஻sᢥtulᐭif((c=getchar())==A)T=NULL;஻v᪛Tree[0].ptr=(CSNode*)malloc(sizeof(CSNode));Tree[O].data=c;Tree[0].ptr->data=c;while((p=getchar())!=A&&(c=getchar())!=A){Tree[n].ptr=(CSNode*)malloc(sizeof(CSNode));Tree[n].data=c;Tree[n].ptr->data=c;for(k=0;Tree[k1.data!=p;k++);஻wx`,yḄPQif(Tree[k].data!=p)returnERROR;஻sxzlj:sᢥ]-lᐭr=Treefk].ptr;if(!r->firstchild)r->firstchild=Treefn].ptr;elseTree[k].lastchild->nextsib=Tree[n].ptr;Treefk].lastchild=Treefnl.ptr;஻#%{|}~%⚪n++;}//whilereturnOK;}//CreateCSTree_Duplet6.68StatusCreateCSTree_Degree(charnode[],intdegree[])஻ᵫḄ]--ᑡ.ᔜḄ᪀⌼᪛ḄNᐘUV⊤(CSNode*ptr[MAXSIZE];஻᪛ᢣ┐Ḅ^_ptr[0]=(CSNode*)malloc(sizeof(CSNode));i=0;k=l;//i`,-,k`,NḄ-while(node[i])ptr[i]->data=node[i];d=degree[i];if(d)

92ptr[k]=(CSNode*)malloc(sizeof(CSNode));//k`,NḄ-ptr[i]->firstchild=ptr[k];//qie%&NkḄὶfor(j=2;j<=d;j++)(ptr[k]=(CSNode*)malloc(sizeof(CSNode));ptr[k-l]->nextsib=ptr[k];஻`Ḅᜧ1ᐸNqᐘUV⊤k++;}//forptr[k-1]->nextsib=NULL;}//ifi++r}//while}//CreateCSTree_Degree6.69voidPrint_BiTree(BiTreeT,inti)஻ᢥ᪛ᡭᓺln᪛Ḅᐗ,i⊤Hᡠᙠ]ᵨi=0(if(T->rchild)Print_BiTree(T->rchild,i+1);for(j=l;j<=i;j++)printf("");஻ᡭᓺi&vt=⊤H]printf("%c

93",T->data);//ᡭᓺTᐗᣚif(T->lchild)Print_BiTree(T->rchild,i+l)r}//Print_BiTreeᑖ᪆:⌴▭5]Ḅ/-¡ᔊ£W¤ᢥ᯿⚪¦⌕Y,§-ᐜM©.6.70StatusCreateBiTree_GList(BiTree&T)஻ᵫª}⊤«uḄlᐭqnV⊤(c=getchar();if(c==¬)T=NULL;஻v᪛else(T=(CSNode*)malloc(sizeof(CSNode));T->data=c;if(getchar()!='(')returnERROR;if(!CreateBiTree_GList(pl))returnERROR;T->lchild=pl;if(getchar()!=',')returnERROR;if(!CreateBiTree_GList(pr))returnERROR;T->rchild=pr;if(getchar()!=1),)returnERROR;//#®¯°5"±²lᐭ³ᔠA(B,C)Ḅtu

94returnOK;}//CreateBiTree_GList6.71voidPrint_CSTree(CSTreeT,inti)஻ᢥµᐭ⊤«uᡭᓺl᪛Ḅᐗ,i⊤Hᡠᙠ]ᵨi=0(for(j=l;j<=i;j++)printf("");//

95",T->data);//ᡭᓺᐗᣚfor(p=T->firstchild;p;p=p->nextsib)Print_CSTree(p,i+1)r஻ᡭᓺ᪛}//Print_CSTree6.72voidPrint_CTree(inte,inti)஻ᢥµᐭ⊤«uᡭᓺl᪛Ḅᐗ,i⊤Hᡠᙠ](for(j=l;j<=i;j++)printf("");஻ᶇi&vt=¹·]printf("%c

96",T.nodes[e].data);//ᡭᓺᐗᣚfor(p=T.nodes[e].firstchild;p;p=p->next)Print_CSTree(p->child,i+1)r஻ᡭᓺ᪗}//Print_CSTreemain()Print_CTree(T.r,O);஻ᵨi=0}//main6.73charc;஻ᐰ»¼½,ᢣH`,³StatusCreateCSTree_GList(CSTree&T)஻ᵫª}⊤«uḄlᐭqNᐘUV⊤(c=getchar();T=(CSNode*)malloc(sizeof(CSNode));T->data=c;if((c=getchar())=='Q//¾¿(if(!CreateCSTree_GList(fc))returnERROR;஻e%&NT->firstchild=fc;

97for(p=fc;c==",';p->nextsib=nc,p=nc)஻ᐘUVif(!CreateCSTree_GList(nc))returnERROR;p->nextsib=NULL;if((c=getchar())!=')')returnERROR;஻ÀWÁÂ)elseT->firtchild=NULL;஻¿returnOK;}//CreateBiTree_GListᑖ᪆:ÃMÄ7Å&Æ⌴ḄÇᔠᡂ%&ᙠ«u<ÈÉÊ%®.Ë%&ᦋÍᜐᙠÏᐭ"ª}⊤tu5ᔲᔠḄᑨÒ.6.74voidPrintGlist_CSTree(CSTreeT)஻ᢥª}⊤«ulNᐘUV⊤⊤HḄ᪛(printf("%c",T->data);if(T->firstchild)஻¾¿(printf("(")rfor(p=T->firstchild;p;p=p->nextsib)(PrintGlist_CSTree(p);if(p->nextsib)printf(",");஻ᨬM%&NM☢W◤⌕Ï⌹)printfC')");}//if}//PrintGlist_CSTree6.75charc;intpos=0;//pos5ᐰ»¼½,ᢣHfgᑖÁᑮ"×&StatusCreateCTree_GList(CTree&T,int&i)஻ᵫª}⊤«uḄlᐭqNV⊤(c=getchar();T.nodes[pos].data=c;i=pos++;//i5»Ø¼½,ᢣH`,ÙᙠᜐᳮḄ᪛᪷if((c=getchar())=='(')஻¾¿(CreateCTree_GList();p=(CTBox*)malloc(sizeof(CTBox));T.nodes[i].firstchild=p;p_>child=pos;஻qNVḄᜮfor(;c==',';p=p->next)஻qNV

98CreateCTree_GList(T,j);஻ᵨjᑖÁÜᑮḄ᪛᪷34p->child=j;p->next=(CTBox*)malloc(sizeof(CTBox));p->next=NULL;if((c=getchar())!=')')returnERROR;஻ÀWÁÂ}//ifelseT.nodes[i].firtchild=NULL;஻¿returnOK;}//CreateBiTree_GListᑖ᪆:Ý/,pos¼½>Ḽ"ᑖÁ"ᙠ⊤/Ḅ34Ḅàᵨ5ᢥᐜ--ᑡáᔣ?ᑖÁ9:᪛᪷T.r%Eã0,äᨬAḄposå;5ᦪT.n.6.76voidPrintGList_CTree(CTreeT,inti)஻ᢥª}⊤«ulNV⊤⊤HḄ᪛(printf("%c",T.nodes[i].data);if(T.nodes[i].firstchild)஻¾¿(printf("(")rfor(p=T->firstchild;p;p=p->nextsib){PrintGlist_CSTree(T,p->child);if(p->nextsib)printf(",");஻ᨬM%&NM☢W◤⌕Ï⌹)printf(")");}//if}//PrintGlist_CTreeeçèé7.14StatusBuild_AdjList(ALGraph&G)஻lᐭᨵᔣéḄ⚔ᦪyᦪ⚔.yḄqëÆ⊤(InitALGraph(G);scanf(H%dn,&v);if(v<0)returnERROR;஻⚔ᦪWÈìG.vexnum=v;scanf(n%dn,&a);

99if(a<0)returnERROR;஻yᦪWÈìG.arcnum=a;for(m=0;mnextarc;q=q->nextarc);q->nextarc=p;}p->adjvex=j;p->nextarc=NULL;}//whilereturnOK;}//Build_AdjList7.15஻⚪/ḄéGᙳᨵᔣðᩗéᐸòóôõ᧕ᵫ:ᑏStatusInsert_Vex(MGraph&G,charv)஻ᙠëÆø▣⊤HḄéGúᐭ⚔v(if(G.vexnum+1)>MAX_VERTEX_NUMreturnINFEASIBLE;G.vexs[++G.vexnum]=v;returnOK;}//Insert_VexStatusInsert_Arc(MGraph&G,charv,charw)஻ᙠëÆø▣⊤HḄéGúᐭy(v,w)(if((i=LocateVex(G,v))<0)returnERROR;if((j=LocateVex(G,w))<0)returnERROR;if(i==j)returnERROR;if(!G.arcs[i][j].adj)(G.arcs[i][j].adj=l;G.arcnum++;)returnOK;}//Insert_Arc

100StatusDelete_Vex(MGraph&G,charv)஻ᙠëÆø▣⊤HḄéGᑤ◀⚔vn=G.vexnum;if((m=LocateVex(G,v))<0)returnERROR;G.vexs[m]v->G.vexs[n];஻ýþᑤ◀⚔ÿᣚᑮᨬ•⚔for(i=0;iadjvex=j;p->nextarc=NULL;if(!G.verticesfi].firstarc)G.vertices[i].firstarc=p;else{for(q=G.vertices[i].firstarc;q->q->nextarc;q=q->nextarc)if(q->adjvex==j)returnERROR;஻RSTᙠ

101q->nextarc=p;)G.arcnum++;returnOK;}//Insert_Arc7.17஻@⁚ḕCDE⚪GHI"@#ᩖḄDelete_Vex.ᐸKLMNᑏI.StatusDelete_Vex(OLGraph&G,charv)஻ᙠᓝVW⊤⊤<Ḅ=G?ᑤ◀⚔v{if((m=LocateVex(G,v))<0)returnERROR;n=G.vexnum;fbr(i=O;ivn;i++)஻ᑤ◀ᡠᨵZv@ᜮḄ(if(G.xlist[i].firstin->tailvex==m)//᝞\ᑤ◀Ḅ]ᜮW?Ḅ^_(q=G.xlist[i].firstin;G.xlist[i].firstin=q->hlink;free(q);G.arcnum—;)else஻ᔲᑣ(for(p=G.xlist[i].firstin;p&&p->hlink->tailvex!=m;p=p->hlink);if(p)(q=p->hlink;p->hlink=q->hlink;free(q);G.arcnum—;)}//else}//forfor(i=0;ivn;i++)஻ᑤ◀ᡠᨵZv@bḄ(if(G.xlist[i].firstout>headvex==m)஻᝞\ᑤ◀Ḅ]bW?Ḅ^_(q=G.xlist[i].firstout;G.xlist[i].firstout=q->tlink;free(q);G.arcnum—;)else஻ᔲᑣ(for(p=G.xlist[i].firstout;p&&p->tlink->headvex!=m;p=p->tlink);if(P)

102q=p->tlink;p->tlink=q->tlink;free(q);G.arcnum—;)}//else}//forfor(i=m;ihlink)p->headvex—;for(p=G.xlist[i].firstout;p;p=p->tlink)p.ுtailvex;஻jᦋᔜpqḄ⚔rs)G.vexnum-;returnOK;}//Delete_Vex7.18஻@⁚ḕCDE⚪GHIDelete.Arc.ᐸKLMNᑏI.StatusDelete_Arc(AMLGraph&G,charv,charw)஻஻ᙠ78tu⊤⊤<Ḅ=G?ᑤ◀(v,w)(if((i=LocateVex(G,v))<0)returnERROR;if((j=LocateVex(G,w))<0)returnERROR;if(G.adjmulist[i].firstedge->jvex==j)G.adjmulist[i].firstedge=G.adjmulist[i].firstedge->ilink;else(fbr(p=G.adjmulist[i].firstedge;p&&p->ilink->jvex!=j;p=p->ilink);if(!p)returnERROR;஻vwxUp->ilink=p->ilink->ilink;}஻ᙠiW⊤qᑤ◀zif(G.adjmulist[j].firstedge->ivex==i)G.adjmulist[j].firstedge=G.adjmulist[j].firstedge->jlink;else(for(p=G.adjmulist[j].firstedge;p&&p->jlink->ivex!=i;p=p->jlink);if(!p)returnERROR;஻vwxUq=p->jlink;p->jlink=q->jlink;free(q);

103}஻ᙠiW⊤qᑤ◀zG.arcnum—;returnOK;}//Delete_Arc7.19StatusBuild_AdjMulist(AMLGraph&G)஻{ᐭᨵᔣ=Ḅ⚔ᦪᦪ⚔}~Ḅ}~78tu⊤(InitAMLGrh(G);scanf(n%dn,&v);if(v<0)returnERROR;஻⚔ᦪ@G.vexnum=v;scanf(%d'\&a);if(a<0)returnERROR;஻ᦪ@G.arcnum=a;for(m=0;mivex=i;p->jvex=5j;p->ilink=NULL;p->jlink=NULL;஻_if(!G.adjmulistfi].firstedge)G.adjmulist[i].firstedge=p;else(q=G.adjmulist[i].firstedge;while(q)(r=qif(q->ivex==i)q=q->ilink;elseq=q->jlink;}if(r->ivex==i)r>ilink=p;஻iIᙠ_Ḅivexqelser->jlink=p;஻Iᙠ_Ḅjvexq}//else//PᐭiW⊤bif(!G.adjmulist[j].firstedge)G.adjmulist[j].firstedge=p;else(q=G.adjmulist[i].firstedge;while(q)

104r=qif(q->jvex==j)q=q->jlink;elseq=q->ilnk;if(r->jvex==j)r->jlink=p;elser->ilink=p;}//else஻PᐭjW⊤b}//forreturnOK;}//Build_AdjList7.20intPass_MGraph(MGraphG)஻ᑨ789▣TḄᨵᔣ=]]⌴Ḅ,]ᑣ1,ᔲᑣ0(for(x=0;xnextarc)(y=p->adjvex;fbr(q=G.vertices[y].firstarc;q;q=q->nextarc){z=q->adjvex;if(z!=x&&!is_adj(G,x,z))return0;}//for}//for}//Pass_ALGraph

105intis_adj(ALGraphG,intm,intn)஻ᑨᨵᔣ=Gq]ᔲTᙠ(m,n),]ᑣ1,ᔲᑣ0(for(p=G.vertices[m].firstarc;p;p=p->nextarc)if(p>>adjvex==n)return1;return0;}//is_adj7.22intvisited[MAXSIZE];஻ᢣ<⚔]ᔲᙠi¡?intexist_path_DFS(ALGraphG,inti,intj)஻¢1£ᐜᑨᨵᔣ=Gq⚔iᑮ⚔j]ᔲᨵ¡]ᑣ1,ᔲᑣ0(if(i==j)return1;//i¥]jelse{visited[i]=l;for(p=G.verticesfi].firstarc;p;p=p->nextarc)(k=p->adjvex;if(!visited[k]&&exist_path(k,j))returnl;//i¦§Ḅ⚔ᑮjᨵ¡}//for}//else}//exist_path_DFS7.23intexist_path_BFS(ALGraphG,inti,intj)஻¨1£ᐜᑨᨵᔣ=Gq⚔iᑮ⚔j]ᔲᨵ¡]ᑣ1,ᔲᑣ0(intvisited[MAXSIZE];InitQueue(Q);EnQueue(Q,i);while(!QueueEmpty(Q))(DeQueue(Q,u);visited[u]=l;for(p=G.vertices[i].firstarc;p;p=p->nextarc)(k=p->adjvex;if(k==j)return1;if(!visited[k])EnQueue(Q,k);}//for

106}//whilereturn0;}//exist_path_BFS7.24voidSTraverse_Nonrecursive(GraphG)஻©⌴ª«ᔊ®¯=G(intvisited[MAXSIZE];InitStack(S);Push(S,GetVex(S,l));஻^⚔ᐭ᪘visit(l);visitedr=1while(!StackEmpty(S))(while(Gettop(S,i)&&i)(j=FirstAdjVex(G,i);if(j&&!visited[j])(visit(j);visited[j]=l;Push(SJ);஻ᔣ±²ᑮ³ᜮ)}//whileif(!StackEmpty(S))(Pop(SJ);Gettop(S,i);k=NextAdjVex(G,i,j);஻ᔣ´²µif(k&&!visited[k])(visit(k);visited[k]=l;Push(S,k);)}//if}//while}//Straverse_Nonrecursiveᑖ᪆:EᙠḄ¶E·¸¹º᪛Ḅᐜr«ᔊ©⌴ª¼½L¾ὃ6.37.ᵫÁ]®¯=ᡠZÂ^_IÃÄÅÆÇᑮᡠᨵ_.7.25ÈÉÊË.

1077.26StatusTopoNo(ALGraphG)஻ᢥ᯿⚪Î⌕Ðdru᣸ᨵᔣ=qḄ⚔(intnew[MAXSIZE],indegree[MAXSIZE];//T_ḄÒrsn=G.vexnum;FindInDegree(G,indegree);InitStack(S);for(i=l;inextarc)(k=p->adjvex;if(!(—indegree[k]))Push(S,k);}//for}//whileif(count

108",i,new[i])returnOK;}//TopoNoᑖ᪆:G⌕ᢥÖᡫ⌮rÚ⚔Ûs¥ZÜ789▣ᡂ@¦Þß9▣.7.27intvisited[MAXSIZE];intexist_path_len(ALGraphG,inti,intj,intk)஻ᑨ78⊤àáTḄᨵᔣ=GḄ⚔ixUj]âTᙠã1@kḄäᓫ¡(if(i==j&&k==O)return1;஻wᑮæ•ᩩ¡çã1ᔠ⌕Ðelseif(k>0)(visited[i]=l;for(p=G.vertices[i].firstarc;p;p=p->nextarc)(l=p->adjvex;if(!visited[l])if(exist_path_len(G,l,j,k-1))return1;஻ᒕK¡ã1ê*}//for

109visited[i]=O;஻E⚪ᐕíîSïÆÇðḄ_Iᙠñᩩ¡q}//elsereturn0;஻òwxU}//exist_path_len7.28intpath[MAXSIZE],visited[MAXSIZE];஻ᨚT«ᔊðôqḄ¡intFind_All_Path(ALGraphG,intu,intv,intk)஻Ðᨵᔣ=Gq⚔uᑮv0Ḅᡠᨵäᓫᡊ¡,k⊤

110");for(i=0;path[i];i++)printf("%d",path[i]);஻ᡭᓺ{I)elsefor(p=G.vertices[u].firstarc;p;p=p->nextarc)(l=p->adjvex;if(!visited[l])Find_AU_Path(G,l,v,k+l);஻ùúûw)visited[u]=0;path[k]=0;஻ü}//Find_All_Pathmain()Find_AH_Path(G,u,v,O);஻ᙠýþᦪqeÿᵨ,k0}//main7.29intGetPathNum_Len(ALGraphG,inti,intj,intlen)஻⊤ḄᨵᔣGḄ⚔iIjlenḄᓫᩩᦪ(if(i==j&&len==O)return1;஻ᑮ"#ᩩ$%&ᔠ⌕elseif(len>0)sum=0;//sum⊤)*+,-Ḅᦪ

111visited[i]=l;for(p=G.verticesfi].firstarc;p;p=p->nextarc)l=p->adjvex;if(!visited[l])sum+=GetPathNum_Len(G,l,j,len-l)஻ᒕ/0#}//forvisited[i]=O;஻,⚪ᐕ345678+Ḅ-9:ᙠ<#ᩩ=}//elsereturnsum;}//GetPathNum_Len7.30intvisited[MAXSIZE];intpath[MAXSIZE];//ᨚ?@intcycles[MAXSIZE][MAXSIZE];஻A:ḄBᡠᒹEḄ-intthiscycle[MAXSIZE];஻?@A:Ḅ#FBintcycount=0;஻GA:ḄBFᦪvoidGetAllCycle(ALGraphG)஻ᨵᔣ=ᡠᨵḄᓫB(for(v=0;vnextarc){w=p->adjvex;if(!visited[w])DFS(G,w,k+l);else஻A:"--ᩩB{for(i=0;path[i]!=w;i++);஻ᑮBḄSfor(j=0;path[i+j];i++)thiscycle[j]=path[i+j];//TBUᑴWᩭif(!exist_cycle())cycles[cycount++]=thiscycle;஻᝞Z[B\]6PQ+$^_`ᑮPQ=for(i=0;i

112visited[k]=O;//efgᨵ?@MḄ-visitedh.jk#lKᔊ=A:?@-visitedh$ᓽ⊤)A:"#ᩩBJ//DFSintexist_cycle()஻ᑨothiscycleᦪd=PQḄBᙠcyclesḄPQ=pᔲG5ᙠ(inttemp[MAXSIZE];for(i=0;i

113voidGet_SGraph(OLGraphG)஻ᓝÝÞ⊤-᪀ḄᨵᔣGḄàá*ᑖ~(count=0;for(v=O;v=0;i-)஻ä¬⌮ᔣḄHIᐜKᔊ(v=finished(i);if(!visited[vj)(printf("

114");஻tḄàá*ᑖ~ᙠtḄ}æ9DFS2(G,v);)}//for}//Get_SGraphvoidDFSl(OLGraphG,intv)஻#¬HIᐜKᔊḄ(visited[v]=l;for(p=G.x!ist[v].firstout;p;p=p->tlink){w=p->headvex;if(!visited[w])DFSl(G,w);}//forfinishedf++count]=v;஻ᙠ#¬Kᔊ=âãfinishedᦪdJ//DFS1voidDFS2(OLGraphG,intv)஻ä¬⌮ᔣḄHIᐜKᔊḄ(visited[v]=l;printf("%d",v);஻ᙠä¬Kᔊ=æ9-NOfor(p=G.xlist[v].firstin;p;p=p->hlink){w=p->tailvex;if(!visited[w])DFS2(G,w);}//forJ//DFS2ᑖ᪆:ᨵᔣḄàá*ᑖ~ḄḄUᩖwHIᐜKᔊst$vO(n+e).7.32

115voidForest_Prim(ALGraphG,intk,CSTree&T)஻ç⚔k9A$᪀⌼⊤-᪀ḄᨵᔣGQᨬéêᡂì᪍T,ᵨîïᐘñÞ⊤(for(j=0òjvG.vexnum;j++)஻¢WᙠPrimẠMôõᦋ÷(closedge[j]={k,Max_int};for(p=G.vertices[j].firstarc;p;p=p->nextarc)if(p->adjvex==k)closedge[j].lowcost=p->cost;}//ifclosedge[k].lowcost=0;for(i=l;inextarc)if(p->costadjvex].lowcost)closedge[p->adjvex]={k,p->cost};}//ifelseForest_Prim(G,k);஻û<᜜•Fá*ᑖ~᡻}}//for}//Forest_PrimvoidAddto_Forest(CSTree&T,inti,intj)஻Tø(i,j)_`ᑮîïᐘñÞ⊤⊤)Ḅ᪛T=(p=Locate(T,i);//ᑮ-iûḄᢣ┐p,ᶍq=(CSTNode*)malloc(sizeof(CSTNode));q->data=j;if(!p)஻⚔᪍ᨵḄ᪛(p=(CSTNode*)malloc(sizeof(CSTNode));p->data=i;for(r=T;r->nextsib;r=r->nextsib);r->nextsib=p;p->firstchild=q;}஻᪛ᐭᑮᨬelseif(!p->firstchild)//!"#$ᨵ%&p->firstchild=q;஻!"Ḅ'(%&else஻!")ᨵ*%&

116fbr(r=p->firstchild;r->nextsib;r=r->nextsib);r.>nextsib+q;஻!"ᨬ,(%&Ḅᐘ.)}//Addto_Forestmain()T=(CSTNode*)malloc(sizeof(CSTNode));஻/0᪛᪷T->data=l;Forest_Prim(G,1,T);}//mainᑖ᪆:5(678ᙠPrim67Ḅ:Ạ<=>*?@ABCᢝE%&ᐘ.F⊤᪀/IᙽKLᑮḄMᐸOPQᩖS0(22).7.33typedefstruct{intvex;஻TUVintecno;஻TᡠḄ@AᑖXV}Vexlnfo;Vexlnfovexs[MAXSIZE];஻YZTᡠ@AᑖXVḄᦪ\voidInit_VexInfo(VexInfo&vexs[Lintvexnum)஻]ᓄ(for(i=0;i

117Init_VexInfb(vexs,G.vexnum);ecnum+G.vexnum;஻@AᑖX(ᦪwhile(ecnum>l){GetMinEdge(EdgeSet,u,v);஻⌱tᨬuvif(!is_ec(vexs,u,v))//uEvc@AᑖX(Addto_CSTree(T,u,v);஻>ᐭᑮkᡂ᪛merge_ec(vexs,vexs[u].ecno,vexs[v].ecno);஻ᔠh@AᑖXecnum—;)DelMinEdge(EdgeSet,u,v);஻xvyᑤ◀}//while}//MinSpanTree_KruscalvoidAddto_CSTree(CSTree&T,inti,intj)஻|v(i,j)=>ᑮ%&ᐘ.F⊤⊤}Ḅ᪛T(p=Locate(T,i);஻~ᑮTiḄᢣ┐p,ᶍq=(CSTNode*)malloc(sizeof(CSTNode));q->data=j;if(!p->firstchild)஻!"#$ᨵ%&p>firstchild=q;஻!"Ḅ'(%&else஻!")ᨵ*%&(for(r=p->firstchild;r->nextsib;r=r->nextsib);r.>nextsib=q;஻!"ᨬ,(%&Ḅᐘ.)}//Addto_CSTreeᑖ᪆:7ᵨT᪀Xᦪ\ᩭ⊤},a(@AᑖXᡠᒹḄᡠᨵT(.ᙠ5(T᪀<*]ᓄMᑨeᐗ8ᔲ((T8ᔲc(@AᑖX)Mᔠh(@AᑖX)Ḅ.7.34StatusTopoSeq(ALGraphG,intnew]])஻ᢥ᯿⚪⌕iᨵᔣ¡BḄT¢£VMh¤ᐭᦪ

118ew(intindegree[MAXSIZE];஻67¥8¦ᡫ᣸UFindIndegree(G,indegree);Initstack(S);for(i=0;i

119Pop(S,i);new[i]=++count;஻|¦ᡫ©U¤ᐭᦪ\ḄᑖXfor(p=G.vertices[i].firstarc;p;p=p->nextarc)(k=p->adjvex;if(!(—indegreefk]))Push(S,k);)}//whileif(count

120",v);}//for}஻Get_Root,5(67⌕iB¾ᨵ¡Mᔲᑣ¿³kÀᑨvoidDFS(ALGraphG,intv)(visited[v]=l;for(p=G.vertices[v].firstarc;p;p=p->nextarc){w=p->adjvex;if(!visited[w])DFS(G,w);)}//DFS7.36voidFill_MPL(ALGraph&G)஻ᨵᔣ¡BG=>MPLÁ(FindIndegree(G,indegree);for(i=0;i

121if(!indegree[i])Get_MPL(G,i);஻xa(²ᐭS⚔t³᪀/MPLÁ}//Fill_MPLintGet_MPL(ALGrÂh&G,inti)஻x(⚔t³᪀/MPLÁhÃÄᐸMPLÅ(if(!G.vertices[i].firstarc)(G.vertices[i].MPL=O;return0;஻²tS⚔)else(max=0;for(p=G.vertices[i].firstarc;p;p=p->nextarc)(j=p->adjvex;if(G.vertices[j].MPL==O)k=Get_MPL(G,j);if(k>max)max=k;//iᐸÆÇ,È⚔MPLḄᨬᜧὅ}G.verticesË]=max+1;஻Î>M¥8ÏÐ⚔ḄMPLreturnmax+1;}//else}//Get_MPL7.37intmaxlen,path[MAXSIZE];//ᦪ\pathᵨ¤ÑÏÐÒÓintmlp[MAXSIZE];஻ᦪ\mlpᵨ¤Ñ³ḄᨬÔÒÓvoidGet_Longest_Path(ALGraphG)//i•(ᨵᔣ¡BᨬÔḄÒÓ(maxlen=0;FindIndegree(G,indegree);for(i=0;i

122path[lenj=i;if(len>maxlen&&!G.vertices[i].firstarc)஻ḄᨬÔÒÓ(for(j=0;j<=len;j++)mlp[j]=path[j];//ؤÙᩭmaxlen=len;)else{for(p=G.vertices[i].firstarc;p;p=p->nextarc)(j=p->adjvex;if(!visited[j])DFS(G,j,len+l);)}//elsepath[i]=O;visited[i]=O;J//DFS7.38voidNiBoLan_DAG(ALGraphG)஻×tᨵᔣ¡BÚÛ⊤}Ḅ⊤ÜÛḄ⌮ÞᐲÛ(FindIndegree(G,indegree);for(i=0;iadjvex);PrintNiBoLan_DAG(G,p->nexarc->adjvex);printf("%c",c);)}//PrintNiBoLan_DAG7.39

123voidPrintNiBoLan_Bitree(BitreeT)஻ᙠ+ãF⊤¤ÑT᪀<¢ä<•⚪(if(T->lchild)PrintNiBoLan_Bitree(T->lchild);if(T->rchild)PrintNiBoLan_Bitree(T->rchild);printf(n%c",T->data);}//PrintNiBoLan_Bitree7.40intEvaluate_DAG(ALGraphG)஻ᨵᔣ¡B⊤}Ḅ⊤ÜÛiÅ(FindIndegree(G,indegree);for(i=0;iadjvex);v2=Evaluate_imp(G,p->nextarc->adjvex);returncalculate(v1,G.vertices[i].optr,v2);}}//Evaluate_impᑖ᪆:⚪åMæÇ⊤ḄverticesᔣXḄᐗçèᦋ᝞Ùêstruct{enumtag{NUM,OPTR};union{intvalue;charoptr;};ArcNode*firstare;}Elemtype;7.41voidCritical_Path(ALGraphG)஻ᑭᵨ¶S·ᐜ¹ᔊiìḄᐵîÒÓ(FindIndegree(G,indegree);for(i=0;i

124for(i=0;inextarc){dut=*p->info;if(ve[i]+dut>ve[p->adjvex])ve[p->adjvex]=ve[i]+dut;DFS1(G,p->adjvex);)J//DFS1voidDFS2(ALGraphG,inti)(if(!G.vertices[i].firstare)vl[i]=ve[i];else{for(p=G.vertices[i].firstarc;p;p=p->nextarc)(DFS2(G,p->adjvex);dut=*p->info;if(vl[p->adjvex]-dutadjvex]-dut;)}//elseJ//DFS27.42voidALGraph_DIJ(ALGi^phG,intvO,Pathmatrix&P,ShortestPathTable&D)஻ᙠæÇ⊤¤ÑT᪀ïðᩲoᱯó67(for(v=0;vnextarc)D[p->adjvex]=*p->info;஻Dᦪ\ô]Åfor(v=0;v

125for(w=0;wnextarc)(w=p->adjvex;if(!final[w]&&(min+(*p->info)?@ᳮ8.11typedefstruct{char*start;intsize;}fmblock;஻BCᙽEF

126char*Malloc_Fdlf(intn)஻⍳ᨬIᑖKὅᨬᐜNOPᑣḄᑁ>ᑖKwhile(Gettop(S,b)&&b.size᦮ᙽ}//main8.12voidFree_Fdlf(char*addr,intn)஻st3⚪vḄNO(while(Gettop(S,b)&&b.start

127Push(S,{addr,n});஻ᐭᑮBCᙽ᪘while(!StackEmpty(T))(Pop(T,b);Push(S,b);}஻ឮeᩭf}//Free_Fdlf8.13voidFree_BT(Space&pav,Spacep)஻ᙠ᪗Ḅ<᝱>?@ᳮᦈBCᙽp(n=p->size;f=p+n-l;஻fᢣᔣBCᙽif((p-l)->tag&&(f+l)->tag)//ᦈᙽt1ᙽᙳᓰᵨᙽ{p->tag=O;f->tag=O;f->uplink=p;if(!pav)(p->llink=p;p->rlink=p;}else(q=pav->llink;p->llink=q;p->rlink=pav;q->rlink=p;pav->llink=p;}pav=p;}//ifelseif(!(p-1)->tag&&(f+1)->tag)஻t1ᙽBCᙽ{q=(p-l)->uplink;q->size+=n;f->uplink=q;f->tag=O;}elseif((p-l)->tag&&!(f+1)->tag)஻1ᙽBCᙽ{q=f+ls=q->llink;t=q->rlink;p->llink=s;p->rlink=t;

128s->rlink=p;t->llink=p;p->size+=q->size;(q+q->size-1)->uplink=p;p->tag=O;)else஻t1ᙽᙳBCᙽ(s=(p-l)->uplink;t=f+1;s->size+=n+t->size;t->llink->rlink=t->rlink;t->rlink->llink=t->llink;(t+t->size-1)->uplink=s;)}//Free_BT,ᙠᨵḄ.8.14voidFree_BS(freelist&avail,char*addr,intn)஻ḄBCᙽᦈ(buddy=addr%(2*n)?(addr-n):(addr+n);஻¡ᦈᙽḄᙢᙬaddr->tag=0;addr->kval=n;for(i=0;avail¢].nodesizellink=addr;addr->rlink=addr;avail[i].first=addr;஻§•Wᜧ^ḄBCᙽ)else(for(p=avail[i].flrst;p!=buddy&&p!=avail[i].first;p=p->rlink);஻¨{if(p==buddy)஻©■BCᙽᡂ¬'(ᔠ(if(p->rlink==p)avail[i].first=NULL;஻#ᜧ^Ḅ§3BCᙽelse{p->llink->rlink=p->rlink;p->rlink->llink=p->llink;}஻SBCᙽ5ᑤ¯new=addr>p?p:addr;஻ᔠIḄ°ᙽ✌ᙬFree_BS(avail,new,2*n);஻⌴³ᙢᦈ°ᙽ}//if

129else஻ᓰᵨᙽ¬ᐭBCᙽ5ᜮ(q=p->rlink;p->rlink=addr;addr->llink=p;q->llink=addr;addr->rlink=q;)}//else}//Free_BS8.15FBList*MakeList(char*highbound,char*lowbound)஻µᚮ·᪀>?ḄḄᡠᨵBCᙽ5ᡂ-ᑭᵨBº⊤»⊤ᜮᢣ┐(p=lowbound;while(p->tag&&p=highbound)returnNULL;஻[ᨵBCᙽhead=p;for(q=p;ptag)(q->next=p;q=p}//ifp->next=NULL;returnhead;஻»ᜮᢣ┐}//MakeList8.16voidMem_Contract(Heap&H)஻ᚮH᡻(>?ÁÂ(q=MemStart;j=O;for(i=0;itag)(s=H.listfi].length;p=H.list[i].stadr;for(k=0;kBºH.list[j].stadr=q;.length=s;஻ÁÂᓰᵨBº⊤j++}//Mem_Contract

1309Ã;½{9.25intSearch_Sq(SSTableST,intkey)஻ᙠᨵf⊤tÄf½{ḄÅÆÇÈᙠÉ᪗Ê(ST.elemfST.length+l].key=key;for(i=l;ST.elem[i].key>key;i++);if(i>ST.lengthllST.elemfi].keyhigh)return0;//½{Òᑮ¬»0mid=(low+high)/2;if(ST.elemfmid].key==key)returnmid;elseif(ST.elem[mid].key>key)returnSearch_Bin_Recursive(ST,key,low,mid-1);elsereturnSearch_Bin_Recursive(ST,key,mid+1,high);)}//Search_Bin_Recursive9.27intLocate_Bin(SSTableST,intkey)//ᢚÔ½{,»^ᡈ×ؽᐗnḄᨬI3W·ÙÚ(int*r;r=ST.e!em;if(key=rfST.length].key)returnST.length;low=1;high=ST.length;while(low<=high)(mid=(low+high)/2;if(key>=r[mid],key&&key

131returnmid;elseif(keyᙠ½{ᜫÞḄÏÐ,Ò◤⌕return0;}//Locate_Bin9.28typedefstruct{intmaxkey;intfirstloc;}Index;typedefstruct{int*elem;intlength;Indexidx[MAXBLOCK];஻ᙽáhlᨬᜧᐗnâidx[0]Òᑭᵨᐸᑁäghᓄ{0,0},ᑭᢚÔ½{intblknum;஻ᙽḄᦪæ}IdxSqList;஻çèÄf⊤EFintSearch_IdxSeq(IdxSqListL,intkey)஻ᑖᙽ½{ᵨᢚÔ½{éêëìᡠᙠᙽᙽᑁíᵨÄf½{(if(key>L.idx[L.blknum].maxkey)returnERROR;஻îjᨬᜧᐗnlow=l;high=L.blknum;found=0;while(lowv=high&&!found)஻ᢚÔ᩵{ëìᡠᙠᙽÚmid(mid=(low+high)/2;if(key<=L.idx[mid].maxkey&&key>L.idxfmid-l].maxkey)found=l;elseif(key>L.idxfmid].maxkey)low=mid+l;elsehigh=mid-l;)i=L.idx[mid].firstloc;஻ᙽḄj=i+blksize-l;஻ᙽḄttemp=L.elem[il];஻ð>%1ᐗnL.elem[i-l]=key;஻ÈÅÆÇfor(k=j;L.elem[k]!=key;k--);஻Äf½{L.elem[i-l]=temp;஻ឮeᐗnif(k

132ᑖ᪆:ᙠᙽᑁ'(Äf½{¬,᝞ó◤⌕ÈÅÆÇᑣôõᐜð>%1ᙽḄ%1ᐗn,öᦪ÷øᜫ.9.29typedefstruct{LNode*h;஻hᢣᔣᨬ^ᐗnLNode*t;஻tᢣᔣt½{Ḅ·Ù}CSList;LNode*Search_CSList(CSList&L,intkey)஻ᙠᨵfᓫ!5⊤>?·᪀tḄ½{,Ꮇêû{"ᡂÎ(if(L.t->data==key)returnL.t;elseif(L.t->data>key)for(p=L.h,i=1;p->data!=key;p=p->next,i++);elsefor(p=L.t,i=L.tpos;p->data!=key;p=p->next,i++);L.t=p;஻ü°tᢣ┐returnp;}//Search_CSListᑖ᪆ýþ⚪æᎷê½{"#ᡂÎḄᡠ,[ᨵᐵᜫḄᜐᳮ.ᵫᑖᙠᭆ᳛ᙳn/3.9.30typedefstruct{DLNode*pre;intdata;DLNode*next;}DLNode;typedefstruct{DLNode*sp;intlength;}DSList;஻Ḅᔣ!"#⊤%&DLNode*Search_DSList(DSList&L,intkey)஻ᙠᨵ(ᔣ!"#⊤)*+᪀-Ḅ./,Ꮇ2345ᡂ7(p=L.sp;if(p->data>key)(while(p->data>key)p=p->pre;L.sp=p;

133elseif(p->datadatanext;L.sp=p;)returnp;}//Search_DSListᑖ᪆::⚪Ḅᙳ<-=•⚪?@ABn/3.9.31intlast=O,flag=l;intIs_BSTree(BitreeT)஻ᑨDEF᪛TBᔲEF᣸(᪛BᑣKL1,ᔲᑣKL0(if(T->lchild&&flag)Is_BSTree(T->lchild);if(T->datadata;if(T->rchild&&flag)Is_BSTree(T->rchild);returnflag;}//Is_BSTree9.32intlast=O;voidMaxLT_MinGT(BiTreeT,intx)஻ᑮEF᣸(᪛TNTxḄᨬᜧᐗXYᜧxḄᨬTᐗX(if(T->lchild)MaxLT_MinGT(T->lchild,x);஻:./ZB[\N(]ᔊᩭ`aif(lastdata>=x)஻ᑮbTxḄᨬᜧᐗXprintf("a=%d

134",last);if(last<=x&&T->data>x)஻ᑮbᜧxḄᨬTᐗXprintf("b=%d

135",T->data);last=T->data;if(T->rchild)MaxLT_MinGT(T->rchild,x)c}//MaxLT_MinGT9.33voidPrint_NLT(BiTreeT,intx)஻dᜧᑮTefEF᣸(᪛TNᡠᨵhTxḄᐗXif(T->rchild)Print_NLT(T->rchild,x)c

136if(T->data

137",T->data);if(T->lchild)Print_NLT(T->lchild,x);஻ᐜuvwḄN(]ᔊ}//Print_NLT9.34voidDelete_NLT(BiTree&T,intx)஻ᑤ◀EF᣸(᪛TNᡠᨵhTxᐗX+z{|}~(if(T->rchild)Delete_NLT(T->rchild,x)cif(T->datalchild;free(q);஻᝞᪛᪷hTx,ᑣᑤ◀᪛᪷{w᪛Ḅ᪷Ḅ᪛᪷if(T)Delete_NLT(T,x);஻ᙠw᪛N᡻s./}//Delete_NLT9.35voidPrint_Between(BiThrTreeT,inta,intb)஻ᡭᓺefvEF᣸(᪛TNᡠᨵᜧaTbḄᐗX(P=T;while(!p->ltag)p=p->lchild;//ᑮᨬTᐗXwhile(p&&p->datadata>a)printf("%d

138",p->data);//efᔠᩩḄᐗXif(p->rtag)p=p->rtag;else{p=p->rchild;while(!p->ltag)p=p->lchild;}஻ᑮN(v}//while}//Print_Between9.36voidBSTree_Insert_Key(BiThrTree&T,intx)஻ᙠvEF᣸(᪛TNᐭᐗXx(if(T->datartag)//Tᨵu᪛nuᐭ

139p=T->rchild;q=(BiThrNode*)malloc(sizeof(BiThrNode));q->data=x;T->rchild=q;T->rtag=O;q->rtag=l;q->rchild=p;//ᦋ)elseBSTreensert_Key(T->rchild,x);//Tᨵu᪛n,ᐭu᪛N}//ifelseif(T->data>x)஻ᐭᑮw᪛N(if(!T->lchild)//Tᨵw᪛nwᐭ(q=(BiThrNode*)malloc(sizeof(BiThrNode));q->data=x;T->lchild=q;q->rtag=l;q->rchild=T;஻ᦋ¡¢Ḅ)elseBSTree_Insert_Key(T->lchild,x);//Tᨵw᪛nᐭw᪛N}//if}//BSTreensert_Key9.37StatusBSTree_Delete_key(BiThrTree&T,intx)஻ᙠvEF᣸(᪛TNᑤ◀ᐗXx(BTNode*pre,*ptr,*suc;//ptrxᡠᙠ+z,preYsueᑖ£ᢣᔣptrḄOPYvp=T;last=NULL;//last¥¦ᢣᔣlO+zpḄO=§(OP)while(!p->ltag)p=p->lchild;//ᑮN(¨¥ᐗXwhile(p)(if(p->data==x)஻©IbᐗXx+z(pre=last;ptr=p;)elseif(last&&last->data==x)suc=p;஻ᑮbxḄvif(p->rtag)p=p->rtag;else(p=p->rchild;while(!p->ltag)p=p->lchild;}//ᑮN(vlast=p;

140"/while஻[\N(]ᔊᑮᐗXx«ᐸOPYv+zif(!ptr)returnERROR;஻¬ᑮ®ij+zDelete_BSTree(ptr);//ᑤ◀x+zif(pre&&pre->rtag)pre->rchild=suc;஻ᦋreturnOK;}//BSTree_Delete_keyvoidDelete_BSTree(BiThrTree&T)஻¯:-°fḄᑤ◀EF᣸(᪛Ḅ᪛TḄ./ᢥ᯿EF᪛Ḅ+᪀b=³ᦋ´(q=T;if(!T->ltag&&T->rtag)஻+zµu᪛¶n·◤¹ºᐸw᪛T=T->lchild;elseif(T->ltag&&!T->rtag)஻+zµw᪛¶n·◤¹ºᐸu᪛T=T->rchild;elseif(!T->ltag&&!T->rtag)//+z»ᨵw᪛¼ᨵu᪛(p=T;r=T->lchild;while(!r->rtag)(s=r;r=r->rchild;//ᑮ+zḄOPrYrḄ½s}T->data=r->data;஻ᵨr¿ÀT+zif(s!=T)s->rchild=r->lchild;elses->lchild=r->lchild;஻¹ºrḄw᪛ᑮᐸ½+z-q=rc}//elsefree(q);஻®¶Á+z}//Delete_BSTreeᑖ᪆::Â/ÃᵨbᐜÄfx+zḄOPYv,Åᑤ◀x+zḄÆ/Ç᪵ᦋnÉQRÊᓫ,̺ÍOPḄᢣᔣvÎsb.᝞ÏÐᙠᑤ◀X+zḄ@nᦋᑣÑ⚪ÒÓᩖᓄb.9.38voidBSTree_Merge(BiTree&T,BiTree&S)஻ÖEF᣸(᪛Sᔠ{ᑮTN(if(S->lchild)BSTree_Merge(T,S->lchild);if(S->rchild)BSTree_Merge(T,S->rchild);஻ᔠ{᪛Insert_Key(T,S);஻ᐭᐗX}//BSTree_Merge

141voidInsert_Node(Bitree&T,BTNode*S)஻Ö᪛+zSᐭᑮTḄᔠ〉ØÙ-(if(S->data>T->data)(if(!T->rchild)T->rchild=S;elseInsert_Node(T->rchild,S);)elseif(S->datadata)(if(!T->lchild)T->lchild=S;elseInsert_Node(T->lchild,S);}S->lchild=NULL;஻ᐭḄ+zÚÛYᩭḄwu᪛DÜᐵÞS->rchild=NULL;//ᔲᑣÉßà᪛+᪀Ḅáâ}//Insert_Nodeᑖ᪆:ÇB=§<¯:-h@Ḅᐭ./.ᙠᔠ{ãäN{h|}ᡈæçè+zBÃéᦋᢣ┐Ḅëìᩭíᡂᔠ{.Ç᪵ÎÚÛᢥ᯿v((ᑡÖ=ï᪛NḄᐗX⌲§ñºᑮò=ï᪛-ᔲᑣóÉßà᪛Ḅ+᪀Ḅáâ.9.39voidBSTree_Split(BiTree&T,BiTree&A,BiTree&B,intx)஻ÖEF᣸(᪛TᑖôõïEF᣸(᪛AYB,ᐸNAḄᐗXᐰ÷Tx,BḄᐗXᐰ÷ᜧx(if(T->lchild)BSTree_Split(T->lchild,A,B,x);if(T->rchild)BSTree_Split(T->rchild,A,B,x);஻ᑖôwu᪛if(T->data<=x)Insert_Node(A,T);elseInsert_Node(B,T);஻óᐗX+zᐭᔠ〉Ḅ᪛N}//BSTree_SplitvoidInsert_Node(Bitree&T,BTNode*S)஻Ö᪛+zSᐭᑮTḄᔠ〉ØÙ-(if(!T)T=S;஻ὃ⇋ᑮúû¥ᑖôn᪛AY᪛B~Ḅelseif(S->data>T->data)஻ᐸÁ÷ᑖ<-=⚪@(if(!T->rchild)T->rchild=S;elseInsert_Node(T->rchild,S);)elseif(S->datadata)(if(!T->lchild)T->lchild=S;elseInsert_Node(T->lchild,S);S->lchild=NULL;

142S->rchild=NULL;}//Insert_Key9.40typedefstruct{intdata;intbf;intIsize;//Isizeü⊤ýþ+zḄw᪛Ḅ+zÿᦪ1BlcNode*lchild,*rchild;}BlcNode,*BlcTree;஻IsizeḄ⊝᣸᪛BTNode*Locate_BlcTree(BlcTreeT,intk)஻ᙠIsizeḄ⊝᣸᪛TkḄ┐(if(!T)returnNULL;//k1ᡈᜧ᪛ᦪif(T->lsize==k)returnT;஻!"elseif(T->lsize>k)returnLocate_BlcTree(T->lchild,k);஻ᙠ#$᪛%&elsereturnLocate_BlcTree(T->rchild,k-T->lsize);//ᙠ'$᪛%&()*⌕,ᦋkḄ.}//Locate_BIcTree9.41typedefstruct{enum{LEAF,BRANCH}tag;஻᪗0intkeynum;BPLinkparent;//12ᢣ┐intkey[MAXCHILD];஻ᐵ56union{BPLinkchild[MAXCHILD];஻78Ḅ9$ᢣ┐struct{rectype*info:MAXCHILD];஻8$Ḅ;<ᢣ┐BPNode*next;஻ᢣᔣ>•"8$Ḅ@A}leaf;}}BPNode,*BPLink,*BPTree;//B+᪛BᐸStatusBPTree_Search(BPTreeT,intkey,BPNode*ptr,intpos)//B+᪛ᢥᐵ56EFG&ḄHI(JKᒹᐵ56Ḅ8$Ḅᢣ┐ptrMBᐵ56ᙠ8$ḄNOpos(P=T;while(p.tag==BRANCH)஻PᑖRᔣ>G&

143for(i=0;ivp>keynum&&key>p->key[i];i++);஻ᐵ56ᡠᙠ$᪛if(i==p->keynum)returnERROR;஻ᐵ56Tᜧp=p->child[i];for(i=0;ikeynum&&key!=p->key[i];i++);஻ᙠUT$G&if(i==p->keynum)returnERROR;஻&VWUᐵ56ptr=p;pos=i;returnOK;}//BPTree_Search9.42voidTrieTreeXnsert_Key(TrieTree&T,StringTypekey)஻ᙠTrie᪛TYᐭ6[\key,StringTypeḄ᪀^_`(q=(TrieNode*)malloc(sizeof(TrieNode));q->kind=LEAF;=key;஻a8$klen=key[0];p=T;i=l;while(p&&i<=klen&&p->bh.ptr[ord(key[i])])(last=p;p=p->bh.ptr[ord(key[i])];i++c}஻efg>G&if(p->kind==BRANCH)஻᝞iᨬklᑮᑖR(nopq)s(p>bh.ptr[ord(key[i])]=q;஻tAuf8$p->bh.num++;)else஻᝞iᨬklᑮ8$(ᨵopq)s(r=(TrieNode*)malloc(sizeof(TrieNode));஻awxḄᑖRlast->bh.ptr[ord(key[il])]=r;஻ᵨxᑖRz{ὁ8$}f~Ḅὶr->kind=BRANCH;r->bh.num=2;r->bh.ptrford(keyfi])l=q;2bh.ptr[ord(p->lf.k[i])]=p;஻xᑖRxὁ"8$u}//TrieTree_Insert_Keyᑖ᪆:eg>gG&,ᙠ.~(᪛ᨵYᐭᐵ56Ḅopq(⌕xa~"8$uᑮᑖRfᓽ.~(ᨵo

144pq(⌕opqḄ8$᪛(ᙠḄNxa•">~ḄᑖR,opq}xᐵ56Ḅ8$uᑮxᑖRḄ>~.9.43StatusTrieTree_Delete_Key(TrieTree&T,StringTypekey)஻ᙠTrie᪛Tᑤ◀6[\key(p=T;i=l;while(p&&p->kind==BRANCH&&i<=key[O])஻G&ᑤ◀ᐗ¡(Iast=p;p=p->bh.ptr[ord(key[i])];i++c)if(p&&p->kind==LEAF&&p->lf.k=key)஻&WU¢£UI◀ᐗ¡(Iast->bh.ptr[ord(key[i-1])]=NULL;free(p);returnOK;)elsereturnERROR;஻&ᑮᑤ|◀ᐗ¡}//TrieTree_Delete_Key9.44voidPrint_Hash(HashTableH)஻ᢥ~"6¥¦§¨Hash⊤Ḅᡠᨵᐵ56(ᐸᜐᳮM¬ᵨ®ឋ°±²ᙬI(for(i=1;i<=26;i++)for(j=i;H.elem[j].key;j=(j+l)%hashsize[sizeindex])஻®ឋ°±if(H(H.elem[j].key)==i)printf("%s

145",H.elem[j]);}//Print_HashintH(char*s)஻´Hashµᦪ(if(s)returns[0]-96;஻´ᐵ56~"6¥Ḅ6¥¶(ᑏ)elsereturn0;}//H9.45typedef*LNode[MAXSIZE]CHashTable;//@ᙢᙬHash⊤

146StatusBuild_Hash(CHashTable&T,intm)஻§ᐭ~¹ᐵ56(awHash⊤,⊤º»m,ᵨ@ᙢᙬIᜐᳮ¼¬.(if(mdata=key;q->next=NULL;n=H(key);if(!T[n])T[n]=q;஻û@⊤Ḅ~"else(for(p=T[n];p->next;p=p->next);p->next=q;஻Yᐭ@⊤Ä.ÅHIVὃ⇋᣸È⚪.}}//whilereturnOK;}//Build_Hash9.46StatusLocate_Hash(HashTableH,introw,intcol,KeyTypekey,int&k)஻᪷ËÌᑡ.ᙠHash⊤⊤ÎḄÏÐÑ▣ᐗ¡keyḄNOk(h=2*(100*(row/10)+col/10);஻ÃὅÔÕḄHashµᦪwhile(H.elem[h].key&&!EQ(H.elem[h].key,key))h=(h+l)%20000;if(EQ(H.elem[h].key,key))k=h;elsek=NULL;}//Locate_Hashᑖ᪆:ÅÖIᡠ×ᵨḄHash⊤º20000,ØÙÚ$»50%,Hashµᦪ»ÌᦪÛN}ᑡᦪÛNᡠ¹ᡂḄ_NᦪÝM(ᵨ®ឋ°±Iᜐᳮ¼¬.Ñ▣Ḅᐗ¡EFᑖÞ,G&Ḅßàᩖâ»0(1).ᓝ`ᑁ᣸10.23voidInsert_Sortl(SqList&L)஻åæçÔᙠè>᪗éḄYᐭ᣸HIk=L.length;

147for(i=k-l஻ÀkᔣÛ⌲"Yᐭ᣸if(L.r[i].key>L.r[i+l].key)(L.r[k+l].key=L.r[i].key;஻åæçfor(j=i+l;L.r[j].key>L.r[i].key;++j)L.r[j-l].key=L.r[j].key;஻-Û'íL.r[j-l].key=L.r[k+l].key;஻Yᐭ)}//Insert_Sortl10.24voidBiInsert_Sort(SqList&L)஻îYᐭ᣸ḄHI(intdfMAXSIZE];஻ïðñx=L.r:.key;d:=x;first=l;final=l;for(i=2;i<=L.length;i++)(if(L.r[i].key>=x)஻YᐭÛ(for(j=final;dfj]>L.rfi].key;j-)dU+H=dU]drj+l]=L.rfi].key;final++;)else஻Yᐭk(for(j=first;d[j]

148p=O;x=L.r[i].key;while(L.r[L.r[p],next],keyL.r[i];L.r[i].next=p;)p=q}//for}//SLInsert_Sort10.26voidBubble_Sortl(inta[],intn)஻ᒹnᐗḄᦪaᦋḄᑈ᣸(change=n-1;//changeᢣ--ᑈ!ᨬ#$%&ᣚḄᐗwhile(change){for(c=0,i=0;ia[i+l])(a[i]<->a[i+l];c=i+l;//cᢣ()ᑈ!$%&ᣚḄᐗ)change=c;}//while}//Bubble_Sortl10.27voidBubble_Sort2(inta[],intn)஻*+,-./ᔣ1Ḅᑈ᣸23(low=0;high=n-l;//ᑈḄ45change=l;

149while(lowa[i+l])(a[i]<->a[i+l];change=1;)high--;஻7ᦋ5for(i=high;i>low;i--)஻64ᔣ1if(a[i]a[i-l];change=1;)Iow++;//7ᦋ45}//while}//Bubble_Sort210.28voidBubble_Sort3(inta[],intn)஻--⚪Ḅ23ᓄ:;<=>!?ᒹ)@ᑈ(intb[3];//b[0]AᑈḄ45,b[2]A5,b[l]Dᵨd=l;b[0]=0;b[2]=n-l;஻dAᑈ/ᔣḄ᪗G,1Aᔣ,-1Aᔣ4change=l;while(b[0]0)஻IJ(&ᣚᩩL(a[i]<->a[i+d];change=1;)b[l+d]-=d;஻7ᦋM5d*=-l;஻ᣚ/ᔣ}//while}//Bubble_Sort310.29

150voidOE_Sort(inta[],intn)஻᜻Ꮤ&ᣚ᣸Ḅ23(change=1;while(change)(change=0;for(i=1;ia[i+l])(a[i]<->a[i+l];change=l;)for(i=0;ia[i+l])(a[i]<->a[i+l];change=l;)}//while}//OE_Sortᑖ᪆:Ὄ23ḄYZᩩL-[\,RSD&ᣚ$%10.30typedefstruct{intlow;inthigh;}boundary;஻]ᑡḄ45_`voidQSort_NotRecurve(intSQList&L)஻ab᣸Ḅc⌴e23(low=l;high=L.length;InitStack(S);//SḄᐗAboundary_`while(low2)஻᝞hij]ᑡklᜧn3opq᣸r(pivot=Partition(L,low,high);஻——ᡀijᑖif(high-pivot>pivot-low)(Push(S,{pivot+1,high});஻ukḄ]ᑡM5ᐭ᪘high=pivot-1;//wḄ]ᑡᶇy4@᣸else

151Push(S,{low,pivot-1});low=pivot+l;)}//ifelseif(lowvhigh&&high-lowv3)஻᝞hij]ᑡklzn3opq᣸r(Easy_Sort(L,low,high);஻{|RS᣸low=high;஻ij]ᑡ᪗}A~᣸r)else஻᝞hij]ᑡ~᣸r᪘!ᨵq᣸Ḅ]ᑡ(Pop(S,a);஻6᪘!)]ᑡlow=a.low;high=a.high;)}//while}//QSort_NotRecurveintPartition(SQList&L,intlow,inthigh)//)ᑜᑖḄ23;*(L.r[0]=L.r[low];pivotkey=L.r[low].key;while(low=pivotkey)high-;L.r[low]=L.r[high];while(lowL.r[high].key)L.r[low]<->L.r[high];else஻]ᑡᨵᐗ(if(L.r[low].key>L.r[low+1].key)L.r[low]<->L.r[low+1];if(L.r[low+1].key>L.r[high].key)L.r[low+l]<->L.r[high];if(L.r[low].key>L.r[low+1].key)L.rflow]<->L.r[low+1];

152}//Easy_Sort10.31voidDivide(inta[],intn)஻uᦪa!ᡠᨵAḄᑮcḄj(low=0;high=n-l;while(low=0)high—;஻0AḄa[low]<->a[high];while(lowa[high];)}//Divide10.32typedefenum{RED,WHITE,BLUE}color;஻⁐voidFlag_Anange(colora[],intn)//uᵫ⁐ᡂḄᑡ᣸Aᢥ᯿;;Ḅ᣸ᑡ(i=Oj=O;k=n-l;while(j<=k)switch(a[j])(caseRED:i++j++break;caseWHITE:j++break;caseBLUE:a[j]<->a[k];k-;//(ᨵj++;¡-A¢■¤&ᣚ#a[j]¥A⁐Ḅ¦§)}//Flag_Arrangeᑖ᪆:(23!¨©¢ᢣ┐.ᐸ!,j⊤ijᐗ;ijḄᐗᐰ¯A⁐;k#Ḅᐗᐰ¯A⁐.(᪵;±²᪷´jḄ⁐;uᐸ&ᣚᑮᑡḄj¯ᡈὅ#¯.

15310.33voidLinkedList_Select_Sort(LinkedList&L)஻ᓫ⊤Ḅ:ᓫ⌱¹᣸23(for(p=L;p->next->next;p=p->next){q=p->next;x=q->data;for(r=q,s=q;r->next;r=r->next)஻ᙠq#☢½¾ᐗᨬzḄY¿if(r->next->datanext->data;s=r;}if(s!=q)஻¾ÁÂJ¢Rq->dataÃzḄᨬzY¿s->next(p->next=s->next;s->next=q;t=q->next;q->next=p->next->next;p->next->next=t;)஻&ᣚqÅs->next,Y¿}//for}//LinkedList_Select_Sort10.34voidBuild_Heap(Heap&H,intn)஻6Æ4᪗ᑮÇ4᪗⌲ᐭÈᚮḄ23(for(i=2;iH.r[k].key)H.r[j]<->H.r[k];j=k}}//for}//Build_Heap10.35voidTriHeap_Sort(Heap&H)஻ᑭᵨÏ᪛ÑÒḄᚮ᣸Ḅ23(for(i=H.length/3;i>0;i—)Heap_Adjust(H,i,H.length);

154for(i=H.length;i>l;i—)(H.r[l]<->H.r[i];Heap_Adjust(H,1,i-1);)}//TriHeap_SortvoidHeap_Adjust(Heap&H,ints,intm)஻⊤H!,H.r[s+1]ᑮH.r[m]~Ì-ᚮ,uH.r[s]ÓᐭÔ᦮ᡂᚮ(rc=H.rfs];for(j=3*s-1j<=m;j=3*j-1){if(j(n-l)?(n-l):(start2+l-l);//IJend2²ìíM5Merge(a,start1,end1,start2,end2);஻eÔ}}//Merge_SortvoidMerge(inta[],intsl,intel,ints2,inte2)஻îᨵ]ᑡa[sl]ᑮa[el]Åa[s2]ᑮa[e2]eÔAᨵᑡa[sl]ᑮa[e2](int"MAXSIZE];஻¨©ïðñòᦪbfor(i=sl,j=s2,k=s1;i<=e1&&j<=e2;k++)

155if(a[i]next,e2=p;p->next;p=e2)(for(i=l,q=p;i<=l&&q->next;i++,q=q->next);el=qfor(i=l;i<=l&&q->next;i++,q=q->next);e2=q;஻ë,yeÔ]ᑡḄøᢣ┐if(el!=e2)LinkedList_Merge(L,p,el,e2);஻eÔ)}//LinkedList_Merge_SortlvoidLinkedList_Merge(LinkedList&L,LNode*p,LNode*el,LNode*e2)஻⊤Ḅ]ᑡeÔ;ù)]ᑡ-6p->nextᑮel,ùú-6el->nextᑮe2(q=p->next;r=el->next;//qÅrA,]ᑡḄ1Ûwhile(q!=el->next&&r!=e2->next)(if(q->datavr->data)஻⌱¹ᐵüýSzḄåY¿|ᙠpḄ#☢(p->next=q;p=q;q=q->next;)else(p->next=r;p=r;r=r->next;)}//whilewhile(q!=el->next)஻|ᒕÿᑖ(p->next=q;p=q;q=q->next;

156while(r!=e2->next)(p->next=r;p=r;r=r->next;}}//LinkedList_Merge10.38voidLinkedList_Merge_Sort2(LinkedList&L)஻ᨬᜧᨵᑡḄ᣸ᵨ᪀(LNode*end[MAXSIZE];஻ᦪᩭᔜᨵᑡḄ#ᢣ┐for(p=L->next>next,i=0;p;p=p->next)஻&ᔜᨵ'ijḄ#ᢣ┐if(!p->nextllp->data>p->next->data)end[i++]=p;while(end[O]->next)஻()*ᑡ+,-..(j=O;k=O;஻j:(/ᑡ#ᢣ┐01;k:3Ḅᑡ#ᢣ┐01for(p=L->next,e2=p;p->next;p=e2)ᡠᨵᑡ(el=end[j];e2=end[j+1];஻56.ᑡif(el->next)LinkedList_Merge(L,p,el,e2);஻end[k++]=e2;஻ᵨ78Ḅ#ᢣ┐9:;ᩭḄ#ᢣ┐j+=2;஻<ᑮ3☢.ᑡ)}//while}//LinkedList_Merge_Sort2voidLinkedList_Merge(LinkedList&L,LNode*p,LNode*el,LNode*e2)஻?⊤AḄᑡ,-BᑡCDp->nextᑮel,BECDel->nextᑮe2(q=p->next;r=el->next;while(q!=el->next&&r!=e2->next)(if(q->datadata)(p->next=q;p=q;q=q->next;)else(p->next=r;p=r;r=r->next;

157}//whilewhile(q!=el->next)(p->next=q;p=q;q=q->next;)while(r!=e2->next)(p->next=r;p=r;r=r->next;)}//LinkedList_Merge,FA⚪HᐰJK10.39voidSL_Merge(intaL,intll,int12)஻NOPᑖQ11,12R11S2<(11+12)Ḅ.ᨵᑡᨵᑡ(startl=0;start2=ll;஻ᑖQ⊤Tᑡ1Uᑡ2ḄᒕWXᑖḄY01for(i=0;i

158a[start+i]=temp;}//for}//RSh10.40v3wxḄy⚪z{ᙠ⊤}Aᙠ~⚪nᳮy.᝞”NBᑡᑜᑖ.ᑡ,ᐸḄBᑡᨵsi,0<=sl

159if(a[j]>a[i])b[i].gt++;elseif(a[j]a[min];஻FBi²ᣚc[min]=INFINITY;஻jᦋ¤Ḅc¨´ᜧµ¶°u⌱9)}//Count_Sort10.44voidEnum_Sort(inta[],intn)஻?ᐵ¸¹9vᑮwhiº»᦮ᦪḄᑡ,-᣸(intnumber[w+1],pos[w+1];for(i=0;i

160}//Enum_Sortᑖ᪆:ÂÃnpὃÅBÆÇÈᐗÉÊË▣<1ḄmnzÍ,ᐸḄposᦪUÎÏḄcpotᦪYḄCJÐÑḄÒᵨ.10.45typedefenum{0,1,2,3,4,5,6,7,8,9}digit;஻0ᦪÐÓtypedefdigit[3]num;//30ÔᯠᦪÐÓᎷ×0ᙠ×°᪗Ø0ᙠØ°᪗voidEnum_Radix_Sort(numaf],intn)஻ᑭᵨ«ᦪÚÛÜᦪ᣸,ᐸᐵ30ÔᯠᦪᐳᨵnÔᯠᦪ(intnumber,pos;numc[MAXSIZE];for(j=0;j<3;j++)//tu?0ᓝ0Uß0᣸(for(i=0;i1&&change;i--)஻?ëᑡ᡻-ᑈó᣸

161change=O;for(j=0;jd[j+l].key)change=l;)}//forfor(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭