




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
清華嚴(yán)蔚敏數(shù)據(jù)結(jié)構(gòu)的全部代碼實(shí)現(xiàn)C語(yǔ)言序名)*/includemalloc()等*/includeatoi()*/includeeof()*/includefloor(),ceil(),abs()*/includeexit()*/狀態(tài)代碼*/#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1/*實(shí)現(xiàn)算法的程序*/include""#include""/*線性表的動(dòng)態(tài)分配順序存儲(chǔ)結(jié)構(gòu)*/#defineLIST_INIT_SIZE10/*線性表存儲(chǔ)空間的初始分配量*/#defineLISTINCREMENT2/*線性表存儲(chǔ)空間的分配增量*/ypedefstruct{ElemType*elem;/*存儲(chǔ)空間基址*/deStatusInitListSqListL*算法*//exitOVERFLOWnOK}troyListSqListLnOK}arListSqListLnOK}sListEmptySqListLTRUEALSE}return;}StatusGetElemSqListLintiElemTypee*e=*+i-1);nOK}lemTypeeStatuscompareElemTypeElemTypeemTypepwhile(i<=&&!compare(*p++,e))returni;return}StatusPriorElem(SqListL,ElemTypecur_e,ElemType*pre_e)lemTypepwhile(i<=&&*p!=cur_e){}rnINFEASIBLE{epnOK}}StatusNextElem(SqListL,ElemTypecur_e,ElemType*next_e)emTypepwhile(i<&&*p!=cur_e){}rnINFEASIBLE{nextepnOK}}StatusListInsertSqListLintiElemTypee)/*算法*/ElemTypenewbaseq,*p;ERRORengthLlistsize{lemTypereallocLelem*L).listsize+LISTINCREMENT)*sizeof(ElemType));exitOVERFLOW}forpLelemLlengthpq-p)/*插入位置及之后的元素右移*/nOK}StatusListDeleteSqListLintiElemType*e)/*算法*/lemTypepqERRORqLelemLlength1;/*表尾元素的位置*/forppqp*被刪除元素之后的元素左移*/p1)=*p;nOK}tatusListTraverseSqListLvoidviElemTypeemTypepintfnnOK}StatusequalElemTypecElemTypec2)TRUEALSE}voidUnionSqListLaSqListLb)/*算法*/ElemTypee;LalenListLengthLa);/*求線性表的長(zhǎng)度*/istLengthLbforiiLbleni){ListInsertLa,++La_len,e);}}idprintElemTypec{printf("%d",*c);}in{LbStatusi;erseLaprintListLbbjjerseLbprintUnion(&La,Lb);averseLaprint算法的程序*/typedefintElemType;voidMergeListSqListLaSqListLb,SqList*Lc)/*算法*/mTypeaibjistLengthLaistLengthLb{tElemLaiaitElemLbjbj{ListInsertLckai;}{ListInsertLckbj;}}{GetElemLaiaiListInsertLckai;}{GetElemLbjbjListInsertLckbj;}}idprintElemTypec{printf("%d",*c);}in{tLaLbLcintja,5,8,11},b[7]={2,6,8,9,11,15,20};ListInsert(&La,j,a[j-1]);erseLaprintListInsert(&Lb,j,b[j-1]);erseLbprintMergeList(La,Lb,&Lc);erseLcprint}算法的程序*/typedefintElemType;voidMergeListSqListLaSqListLb,SqList*Lc)/*算法*/ElemType*pa,*pa_last,*pb,*pb_last,*pc;pcLcelemElemType*)malloc((*Lc).listsize*sizeof(ElemType));if*Lc).elem)/*存儲(chǔ)分配失敗*/palast;pblast;papb}}idprintElemTypec{printf("%d",*c);}in{tLaLbLcListInsert(&La,j,j);erseLaprintListInsert(&Lb,j,2*j);erseLbprintMergeList(La,Lb,&Lc);erseLcprint}一個(gè)循環(huán)語(yǔ)句中的條件語(yǔ)句為開(kāi)關(guān)語(yǔ)句,且當(dāng)*/typedefintElemType;ypec{returni;}idMergeListSqListLaSqListLbSqListLc{/*另一種合并線性表的方法(根據(jù)算法下的要求修改算法)*/ElemType*pa,*pa_last,*pb,*pb_last,*pc;pcLcelemElemType*)malloc((*Lc).listsize*sizeof(ElemType));palast;pblast;witchcomppapb{epcpaepcpb}papb}idprintElemTypec{printf("%d",*c);}in{tLaLbLcListInsert(&La,j,j);erseLaprintListInsert(&Lb,j,2*j);erseLbprintMergeList(La,Lb,&Lc);erseLcprint}算法、的程序*/typedefintElemType;/*線性表的單鏈表存儲(chǔ)結(jié)構(gòu)*/{ElemTypedata;ructLNodenextinclude""StatusInitList(LinkList*L)ifL/*存儲(chǔ)分配失敗*/exitOVERFLOWreturnOK;}StatusDestroyList(LinkList*L)LinkListq;while(*L){q=(*L)->next;eeL}returnOK;}LinkListp,q;while(p)/*沒(méi)到表尾*/{qp>next;}L->next=NULL;/*頭結(jié)點(diǎn)指針域?yàn)榭?/returnOK;}StatusListEmpty(LinkListL)FALSE*/ifLnext)/*非空*/returnFALSE;returnTRUE;}intListLength(LinkListL)while(p)/*沒(méi)到表尾*/{p=p->next;}returni;}StatusGetElem(LinkListL,inti,ElemType*e)/*算法*/{p=p->next;}returnERROR;returnOK;}intLocateElem(LinkListL,ElemTypee,Status(*compare)(ElemType,ElemType))LinkListp=L->next;while(p){if(compare(p->data,e))/*找到這樣的數(shù)據(jù)元素*/returni;p=p->next;}return0;}StatusPriorElem(LinkListL,ElemTypecur_e,ElemType*pre_e){ifqdata=cur_e){*pre_e=p->data;returnOK;}}returnINFEASIBLE;}StatusNextElem(LinkListL,ElemTypecur_e,ElemType*next_e){ifpdata=cur_e){*next_e=p->next->data;returnOK;}p=p->next;}returnINFEASIBLE;}StatusListInsertLinkListLintiElemTypeeL/LinkListp=L,s;{p=p->next;}returnERROR;s=(LinkList)malloc(sizeof(structLNode));/*生成新結(jié)點(diǎn)*/snextpnextp->next=s;returnOK;}StatusListDeleteLinkListLintiElemTypeeL*/LinkListp=L,q;{p=p->next;}returnERROR;q=p->next;/*刪除并釋放結(jié)點(diǎn)*/p->next=q->next;*e=q->data;returnOK;}StatusListTraverse(LinkListL,void(*vi)(ElemType))iLinkListp=L->next;while(p){vi(p->data);p=p->next;}printf("\n");returnOK;}voidCreateList(LinkList*L,intn)/*算法*/inkListpLLinkListmallocsizeofstructLNode);Lfor(i=n;i>0;--i){pLinkListmalloc(sizeof(structLNode));/*生成新結(jié)點(diǎn)*/canfdpdatapnext(*L)->next;/*插入到表頭*/}}voidCreateListLinkListLintn)nkListpqLLinkListmallocsizeofstructLNode/*生成頭結(jié)點(diǎn)*/q=*L;{pLinkListmallocsizeofstructLNode);}nextNULL}voidMergeListLinkListLaLinkListLbLinkListLc/*算法*/LinkListpaLanextpb=(*Lb)->next,pc;while(pa&&pb){pcnextpapapanext;}{xtpbpbnext}pcnext=papa:pb;/*插入剩余段*/}voidvisitElemTypecListTraverse調(diào)用的函數(shù)(類型要一致)*/{printf("%d",c);}in{LinkListLa,Lb,Lc;printf("按非遞減順序,");ListTraverse(La,visit);printf("按非遞增順序,");nListTraverse(Lb,visit);ListTraverse(Lc,visit);}利用單鏈表結(jié)構(gòu)處理教科書(shū)圖(學(xué)生健康登記表)*/defineNAMELEN/*姓名最大長(zhǎng)度*/defineCLASSLEN/*班級(jí)名最大長(zhǎng)度*/d{harnameNAMELENcharClassCLASSLENtypedefstructstudElemType型為結(jié)構(gòu)體*/FILEfpStatusInitListLinkListL拷自*/nOK}StatusListTraverseLinkListLvoidviElemType拷自*/LinkListpL->next;whilep){pdatappnext}ntfnnOK}voidInsertAscendLinkListLElemTypee此函數(shù)是由中的同名函數(shù)改寫(xiě)*/LinkListq=L,p=L->next;while(p&&>p->{ppnext}taextp}voidPrint(structstude)printfs%6ld",,;tftfprintfd%-4s",,;printfsn",sta[]);}voidReadInstructstud*e)printf"請(qǐng)輸入學(xué)號(hào):");umprintf("請(qǐng)輸入性別(m:男f:女):");cesexprintf請(qǐng)輸入年齡:");printf"請(qǐng)輸入健康狀況(0:%s1:%s2:%s):",sta[0],sta[1],sta[2]);}voidWriteToFile(structstude)riteesizeofstructstudfp}StatusReadFromFilestructstudetudfpnOKERROR}StatusFindFromNum(LinkListL,longnum,LinkList*p,LinkList*q)while*p){qp>next;fqqnumRUE}ALSE}StatusFindFromName(LinkListL,charname[],LinkList*p,LinkList*q)whilep){qp>next;trcmpqnameRUE}ALSE}StatusDeleteElemNum(LinkListL,longnum)nkListpq{pnextq->next;RUE}ALSE}StatusDeleteElemName(LinkListL,charname[])nkListpq{pnextq->next;RUE}ALSE}dModifyElemTypeePrinte);/*顯示原內(nèi)容*/printf改項(xiàng)的內(nèi)容,不修改的項(xiàng)按回車鍵保持原值:\n");printf"請(qǐng)輸入學(xué)號(hào):");printf("請(qǐng)輸入性別(m:男f:女):");printf"請(qǐng)輸入年齡:");printf(0:%s1:%s2:%s):",sta[0],sta[1],sta[2]);ehealthatois*/}in{gcharfilename[13],name[NAMELEN+1];ElemTypee;LinkListT,p,q;whileflag){printf的記錄按學(xué)號(hào)非降序插入鏈表\n");printf新記錄,并將其按學(xué)號(hào)非降序插入鏈表\n");printf中第一個(gè)有給定學(xué)號(hào)的記錄\n");printf中第一個(gè)有給定姓名的記錄\n");printf中第一個(gè)有給定學(xué)號(hào)的記錄\n");printf中第一個(gè)有給定姓名的記錄\n");printf中第一個(gè)有給定學(xué)號(hào)的記錄\n");printf中第一個(gè)有給定姓名的記錄\n");printf所有記錄11:將鏈表中的所有記錄存入文件12:結(jié)束\n");printf"請(qǐng)選擇操作命令:");{jNjcaseprintf:");printf\n");{whileReadFromFile(&e))}caseprintf除記錄的學(xué)號(hào):");caseprintf除記錄的姓名:");caseprintf改記錄的學(xué)號(hào):");{Modify(&q->data);{}}caseprintf錄的姓名:");{Modify(&q->data);{}}caseprintf錄的學(xué)號(hào):");pqntqdatacaseprintf錄的姓名:");amepqntqdatacaseprintf齡班級(jí)健康狀況\n");TPrintcaseprintf");eenamewbNULLrintfnListTraverse(T,WriteToFile);lag}}}教科書(shū)中圖靜態(tài)鏈表示例*/defineN*字符串長(zhǎng)度*/peNinclude""/*線性表的靜態(tài)單鏈表存儲(chǔ)結(jié)構(gòu)*/#defineMAXSIZE100/*鏈表的最大長(zhǎng)度*/ypedefstruct{ElemTypedata;}component,SLinkList[MAXSIZE];dmain{s={{"",1},{"ZHAO",2},{"QIAN",3},{"SUN",4},{"LI",5},{"ZHOU",6},{"WU",7},{"ZHENG",8},{"WANG",0}};while(i)/*輸出教科書(shū)中圖(a)的狀態(tài)*/{printfs",s[i].data);/*輸出鏈表的當(dāng)前值*/}ntfnscurb/Iwhile(i)/*輸出教科書(shū)中圖(b)的狀態(tài)*/{printfs",s[i].data);/*輸出鏈表的當(dāng)前值*/}ntfn}算法的程序*/#defineN2typedefcharElemType;include""intMalloc(SLinkListspace)/*算法*/spacecurifi空*/space[0].cur=space[i].cur;/*備用鏈表的頭結(jié)點(diǎn)指向原備用鏈表的第二個(gè)結(jié)returni;/*返回新開(kāi)辟結(jié)點(diǎn)的坐標(biāo)*/}voidFree(SLinkListspace,intk)/*算法*/space[k].cur=space[0].cur;/*回收結(jié)點(diǎn)的"游標(biāo)"指向備用鏈表的第一個(gè)結(jié)點(diǎn)space[0].cur=k;/*備用鏈表的頭結(jié)點(diǎn)指向新回收的結(jié)點(diǎn)*/}voidDestroyList()}include""voidInitSpace(SLinkListL)/*算法。另加*/*/for(i=0;i<MAXSIZE-1;i++)L[i].cur=i+1;L[MAXSIZE-1].cur=0;}intInitListSLinkListL)/L[i].cur=0;/*空鏈表的表頭指針為空(0)*/returni;}StatusClearList(SLinkListL,intn)intj,k,i=L[n].cur;/*鏈表第一個(gè)結(jié)點(diǎn)的位置*/L[n].cur=0;/*鏈表空*/k=L[0].cur;/*備用鏈表第一個(gè)結(jié)點(diǎn)的位置*/L[0].cur=i;/*把鏈表的結(jié)點(diǎn)連到備用鏈表的表頭*/while(i)/*沒(méi)到鏈表尾*/{i=L[i].cur;/*指向下一個(gè)元素*/}L[j].cur=k;/*備用鏈表的第一個(gè)結(jié)點(diǎn)接到鏈表的尾部*/returnOK;}StatusListEmpty(SLinkListL,intn)if(L[n].cur==0)/*空表*/returnTRUE;returnFALSE;}intListLength(SLinkListL,intn)while(i)/*沒(méi)到靜態(tài)鏈表尾*/{i=L[i].cur;/*指向下一個(gè)元素*/}returnj;}StatusGetElem(SLinkListL,intn,inti,ElemType*e)returnERROR;k=L[k].cur;*e=L[k].data;returnOK;}intLocateElem(SLinkListL,intn,ElemTypee)whileiLidataee是字符串)*/returni;}StatusPriorElem(SLinkListL,intn,ElemTypecur_e,ElemType*pre_e)i}while(i&&cur_e!=L[i].data);ifi*/{*pre_e=L[j].data;returnOK;}returnERROR;}StatusNextElem(SLinkListL,intn,ElemTypecur_e,ElemType*next_e){{*next_e=L[i].data;}}}StatusListInsert(SLinkListL,intn,inti,ElemTypee)returnERROR;j=Malloc(L);/*申請(qǐng)新單元*/fj{L[j].data=e;/*賦值給新單元*/k=L[k].cur;L[j].cur=L[k].cur;L[k].cur=j;returnOK;}returnERROR;}StatusListDelete(SLinkListL,intn,inti,ElemType*e)returnERROR;k=L[k].cur;curL[k].cur=L[j].cur;*e=L[j].data;Free(L,j);returnOK;}StatusListTraverse(SLinkListL,intn,void(*vi)(ElemType))*/inti=L[n].cur;/*指向第一個(gè)元素*/while(i)/*沒(méi)到靜態(tài)鏈表尾*/{i=L[i].cur;/*指向下一個(gè)元素*/}printf("\n");returnOK;}voiddifference(SLinkListspace,int*S)/*算法*/Typebpace{curi}cpacercurbwhile(k!=space[r].cur&&space[k].data!=b)spacekcur}r}else*/{rspacekrp/*若刪除的是尾元素,則需修改尾指針*/}}}voidvisitElemTypec){printf("%c",c);}in{SLinkLists;istTraverseskvisit}盡量采用中的基本操作實(shí)現(xiàn)算法的功能*/#defineN2typedefcharElemType;voidvisitElemTypec){printf("%c",c);}erenceSLinkListspaceypebcpaceprintf("請(qǐng)輸入集合A的元素(共%d個(gè)):",m);{ListInsertspaceSjb);/*插入到表尾*/}fcprintf("請(qǐng)輸入集合B的元素(共%d個(gè)):",n);{}}turnS}in{SLinkLists;encesaverseskvisit}/*兩個(gè)僅設(shè)表尾指針的循環(huán)鏈表的合并(教科書(shū)圖)*/typedefintElemType;include""/*線性表的雙向鏈表存儲(chǔ)結(jié)構(gòu)*/typedefstructDuLNode{ElemTypedata;structDuLNode*prior,*next;}DuLNode,*DuLinkList;include""StatusInitList_CL(LinkList*L)ifL/*存儲(chǔ)分配失敗*/exitOVERFLOWreturnOK;}StatusDestroyList_CL(LinkList*L)while(p!=*L)/*沒(méi)到表尾*/{qp>next;}eeLLreturnOK;}LLinkListp,q;while(p!=*L)/*沒(méi)到表尾*/{qp>next;}xtLreturnOK;}StatusListEmpty_CL(LinkListL)FALSE*/ifLnext==L)/*空*/returnTRUE;returnFALSE;}intListLength_CL(LinkListL)while(p!=L)/*沒(méi)到表尾*/{p=p->next;}returni;}StatusGetElem_CL(LinkListL,inti,ElemType*e)xtpreturnERROR;while(j<i)p=p->next;}returnOK;}intLocateElem_CL(LinkListL,ElemTypee,Status(*compare)(ElemType,ElemType))xtpwhile(p!=L->next){if(compare(p->data,e))/*滿足關(guān)系*/returni;p=p->next;}return0;}StatusPriorElem_CL(LinkListL,ElemTypecur_e,ElemType*pre_e)nextnextpqpnext;{ifqdata=cur_e){*pre_e=p->data;returnTRUE;}qq>next;}returnFALSE;}StatusNextElem_CL(LinkListL,ElemTypecur_e,ElemType*next_e)xtp{ifpdata=cur_e){*next_e=p->next->data;returnTRUE;}p=p->next;}returnFALSE;}StatusListInsertCLLinkListLintiElemTypeeL/returnERROR;{p=p->next;}s=(LinkList)malloc(sizeof(structLNode));/*生成新結(jié)點(diǎn)*/snextpnextp->next=s;ifpL/*改變尾結(jié)點(diǎn)*/returnOK;}StatusListDeleteCLLinkListLintiElemTypeeL*/returnERROR;{p=p->next;}p->next=q->next;*e=q->data;if(*L==q)/*刪除的是表尾元素*/free(q);/*釋放待刪除結(jié)點(diǎn)*/returnOK;}StatusListTraverse_CL(LinkListL,void(*vi)(ElemType))vi()失敗,則操作失敗*/LinkListp=L->next->next;while(p!=L->next){vi(p->data);p=p->next;}printf("\n");returnOK;}voidMergeList_CL(LinkList*La,LinkListLb){LinkListp=Lb->next;Lbnext*La)->next;}voidvisitElemTypec){printf("%d",c);}in{LinkListLa,Lb;oriiniListInsert_CL(&La,i,i);ListTraverse_CL(La,visit);oriiniListInsert_CL(&Lb,1,i*2);ListTraverse_CL(Lb,visit);MergeList_CL(&La,Lb);printfLaLb=");/*輸出合并后的鏈表的內(nèi)容*/ListTraverse_CL(La,visit);}現(xiàn)算法、的程序*/typedefintElemType;include""/*帶頭結(jié)點(diǎn)的線性鏈表類型*/typedefstructLNode/*結(jié)點(diǎn)類型*/{ElemTypedata;ructLNodenext}LNode,*Link,*Position;typedefstructLinkList/*鏈表類型*/{Linkhead,tail;/*分別指向線性鏈表中的頭結(jié)點(diǎn)和最后一個(gè)結(jié)點(diǎn)*/intlen;/*指示線性鏈表中數(shù)據(jù)元素的個(gè)數(shù)*/include""StatusMakeNode(Link*p,ElemTypee)*p=(Link)malloc(sizeof(LNode));returnERROR;returnOK;}voidFreeNode(Link*p)eppNULL}StatusInitList(LinkList*L)Linkp;p=(Link)malloc(sizeof(LNode));/*生成頭結(jié)點(diǎn)*/{p->next=NULL;returnOK;}returnERROR;}StatusClearList(LinkList*L)Linkp,q;if((*L).head!=(*L).tail)/*不是空表*/{p=q=(*L).head->next;while(p!=(*L).tail){p=q->next;}}returnOK;}StatusDestroyList(LinkList*L)ClearList(L);/*清空鏈表*/FreeNode(&(*L).head);returnOK;}snexthnexth->next=s;xtreturnOK;}*q=h->next;ifq*/{h->next=(*q)->next;if(!h->next)/*刪除尾結(jié)點(diǎn)*/returnOK;}returnFALSE;/*鏈表空*/}StatusAppend(LinkList*L,Links)L/*的尾結(jié)點(diǎn)*/while(s->next){}returnOK;}PositionPriorPos(LinkListL,Linkp)Linkq;ifqp無(wú)前驅(qū)*/returnNULL;{qq>next;returnq;}}StatusRemove(LinkList*L,Link*q)Linkp=(*L).head;if((*L).len==0)/*空表*/{qNULLreturnFALSE;}while(p->next!=(*L).tail)p=p->next;*q=(*L).tail;p->next=NULL;returnOK;}StatusInsBefore(LinkList*L,Link*p,Links)Linkq;q(*L).head;qnextsreturnOK;}StatusInsAfter(LinkList*L,Link*p,Links)if(*p==(*L).tail)/*修改尾指針*/s->next=(*p)->next;returnOK;}StatusSetCurElem(Linkp,ElemTypee)p->data=e;returnOK;}ElemTypeGetCurElem(Linkp)returnp->data;}StatusListEmpty(LinkListL)returnFALSE;returnTRUE;}intListLength(LinkListL)return;}PositionGetHead(LinkListL)return;}PositionGetLast(LinkListL)return;}PositionNextPos(Linkp)returnp->next;}StatusLocatePos(LinkListL,inti,Link*p)ERROR*/returnERROR;{for(j=1;j<=i;j++)*p=(*p)->next;returnOK;}}PositionLocateElem(LinkListL,ElemTypee,StatusLLinkp=;p=p->next;while(p&&!(compare(p->data,e)));/*沒(méi)到表尾且沒(méi)找到滿足關(guān)系的元素*/returnp;}StatusListTraverse(LinkListL,void(*visit)(ElemType))Linkp=>next;forjj<=;j++){visit(p->data);p=p->next;}printf("\n");returnOK;}StatusOrderInsert(LinkList*L,ElemTypee,int(*comp)(ElemType,ElemType))Linko,p,q;q(*L).head;p=q->next;pe{p=p->next;}o=(Link)malloc(sizeof(LNode));/*生成結(jié)點(diǎn)*/o->data=e;/*賦值*/q->next=o;/*插入*/onextp;ifp*/returnOK;}StatusLocateElemP(LinkListL,ElemTypee,Position*q,int(*compare)(ElemType,ElemType))/*compare()取值>0的元素的前驅(qū)的位置。并返回FALSE。(用于一元多項(xiàng)式)*/Linkp=,pp;{ppp=p->next;repdataep{preturnFALSE;}else/*找到*/{returnTRUE;}}StatusListInsertL(LinkList*L,inti,ElemTypee)/*算法*/hsreturnERROR*結(jié)點(diǎn)分配失敗*/nOK}StatusMergeList_L(LinkListLa,LinkListLb,LinkListLcintcompareElemTypeElemType/*線性表Lc,Lc的元素也按值非遞減排列。(不改變La、Lb)算法*/Linkhahbpapbq;emTypeabreturnERROR*存儲(chǔ)空間分配失敗*/bGetHeadLbbNextPoshb{CurElempb{DelFirstLaha,&q);NextPosha}{DelFirstLbhb,&q);NextPoshb}}AppendLcpa;AppendLcpb;NodehaNodehbOK}ypec{returnc1-c2;}voidvisitElemTypec){printfd",c);/*整型*/}in{LinkListLa,Lb,Lc;forjjjListInsert_L(&La,j,j);/*順序插入12345*/printfLaListTraverse(La,visit);forjjjListInsert_L(&Lb,j,2*j);/*順序插入246810*/printfLbListTraverse(Lb,visit);printfLcListTraverse(Lc,visit);DestroyListLc}typedefintElemType;include/*此句與不同(因?yàn)椴捎貌煌慕Y(jié)構(gòu))*/include/*此句與不同(因?yàn)椴捎貌煌慕Y(jié)構(gòu))*/StatusequalElemTypecElemTypec2)TRUELSE}voidUnionLinkListLaLinkListLb)/*算法,此句與不同*/ElemTypee;LalenListLengthLa;/*求線性表的長(zhǎng)度*/istLengthLbforiiLbleni){ListInsertLa,++La_len,e);}}voidprintElemTypec){printf("%d",c);}in{LinkListLaLb/*此句與不同(因?yàn)椴捎貌煌慕Y(jié)構(gòu))*/Statusi;erseLaprintListLbjerseLbprintUnion(La,Lb);erseLaprint}typedefintElemType;include*此句與不同*/include此句與不同*/voidMergeListLinkListLaLinkListLbLinkListLc*算法,此句與不同*/mTypeaibjistLengthLaistLengthLb{tElemLaiaitElemLbjbj{tInsertLckai}{tInsertLckbj}}{GetElemLaiaistInsertLckai}{GetElemLbjbjstInsertLckbj}}voidprintElemTypec){printf("%d",c);}in{LinkListLaLbLc/*此句與不同*/intja,5,8,11},b[7]={2,6,8,9,11,15,20};ListInsertLa,j,a[j-1]);averseLaprintListInsertLb,j,b[j-1]);averseLbprintMergeListLaLb&Lc);averseLcprint}算法、的程序*/include""/*串的定長(zhǎng)順序存儲(chǔ)表示*/NMAXSTRLENinclude""StatusStrAssign(SStringT,char*chars)fstrlencharsMAXSTRLENreturnERROR;{T[0]=strlen(chars);for(i=1;i<=T[0];i++)T[i]=*(chars+i-1);returnOK;}}StatusStrCopy(SStringT,SStringS)for(i=0;i<=S[0];i++)T[i]=S[i];returnOK;}StatusStrEmpty(SStringS)returnTRUE;returnFALSE;}intStrCompare(SStringS,SStringT)for(i=1;i<=S[0]&&i<=T[0];++i)returnS[i]-T[i];returnS[0]-T[0];}intStrLength(SStringS)returnS[0];}StatusClearString(SStringS)S[0]=0;/*令串長(zhǎng)為零*/returnOK;}StatusConcat(SStringT,SStringS1,SStringS2)/*算法改*/ifSS2[0]<=MAXSTRLEN)for(i=1;i<=S1[0];i++)T[i]=S1[i];for(i=1;i<=S2[0];i++)T[S1[0]+i]=S2[i];T[0]=S1[0]+S2[0];returnTRUE;}for(i=1;i<=S1[0];i++)T[i]=S1[i];for(i=1;i<=MAXSTRLEN-S1[0];i++)T[S1[0]+i]=S2[i];T[0]=MAXSTRLEN;returnFALSE;}}StatusSubString(SStringSub,SStringS,intpos,intlen)returnERROR;for(i=1;i<=len;i++)Sub[i]=S[pos+i-1];Sub[0]=len;returnOK;}intIndex(SStringS,SStringT,intpos)fposposS{while(i<=S[0]&&j<=T[0])if(S[i]==T[j])/*繼續(xù)比較后繼字符*/{}else/*指針后退重新開(kāi)始匹配*/{}returni-T[0];return0;}return0;}StatusStrInsert(SStringS,intpos,SStringT)returnERROR;ifST=MAXSTRLEN)for(i=S[0];i>=pos;i--)S[i+T[0]]=S[i];for(i=pos;i<pos+T[0];i++)S[i]=T[i-pos+1];S[0]=S[0]+T[0];returnTRUE;}for(i=MAXSTRLEN;i<=pos;i--)S[i]=S[i-T[0]];for(i=pos;i<pos+T[0];i++)S[i]=T[i-pos+1];S[0]=MAXSTRLEN;returnFALSE;}}StatusStrDelete(SStringS,intpos,intlen)returnERROR;for(i=pos+len;i<=S[0];i++)S[i-len]=S[i];S0]-=len;returnOK;}StatusReplace(SStringS,SStringT,SStringV)returnERROR;{{}returnOK;}voidDestroyString()}voidStrPrint(SStringT)for(i=1;i<=T[0];i++)printf("%c",T[i]);printf("\n");}voidget_next(SStringT,intnext[])whileiT[0]){}}SSStringTintposintnextwhile(i<=S[0]&&j<=T[0])jSiTj{}seturniTreturn}in{SStringss以教科書(shū)中圖為例*/StrAssign(s1,"acabaabaabcacaabc");printf"主串為:");StrAssign(s2,"abaabcac");printf"子串為:");extsporjjijprintfd(p+j));tfnprintf不成功\n");}算法的程序*/include""/*稀疏矩陣的三元組順序表存儲(chǔ)表示*/#defineMAXSIZE100/*非零元個(gè)數(shù)的最大值*/ypedefstruct{intij/*行下標(biāo),列下標(biāo)*/ElemTypee;/*非零元素值*/ypedefstruct{Tripledata[MAXSIZE+1];/*非零元三元組表,data[0]未用*/intmu,nu,tu;/*矩陣的行數(shù)、列數(shù)和非零元個(gè)數(shù)*/include""StatusCreateSMatrix(TSMatrix*M)ElemTypee;Statusk;scanf("%d,%d,%d",&(*M).mu,&(*M).nu,&(*M).tu);Mdatai序做準(zhǔn)備*/for(i=1;i<=(*M).tu;i++){{printf("請(qǐng)按行序順序輸入第%d個(gè)非零元素所在的行(1~%d),列(1~%d),元素scanf("%d,%d,%d",&m,&n,&e);行或列的順序有錯(cuò)*/}returnOK;}voidDestroySMatrix(TSMatrix*M)}voidPrintSMatrix(TSMatrixM)printf("行列元素值\n");forii<=;i++)printf("%2d%4d%8d\n",[i].i,[i].j,[i].e);}StatusCopySMatrix(TSMatrixM,TSMatrix*T)returnOK;}intcomp(intc1,intc2)/*另加*/elseifcc)returni;}StatusAddSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)Triple*Mp,*Me,*Np,*Ne,*Qh,*Qe;returnERROR;returnERROR;Qwhile(Mp<=Me&&Np<=Ne){eswitch(comp(Mp->i,Np->i)){case1:*Qe=*Mp;Mp++;breakcaseswitchcompMpjNpjMN*/{case1:*Qe=*Mp;Mp++;breakcase0:*Qe=*Mp;Qe->e+=Np->e;Mp++;Np++;breakcase-1:*Qe=*Np;Np++;}breakcase-1:*Qe=*Np;Np++;}}while(Np<=Ne){eQe*Np;Np++;}while(Mp<=Me){eQe*Mp;Mp++;}returnOK;}StatusSubtSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)forii<=;i++)AddSMatrix(M,N,Q);returnOK;}StatusMultSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q)jhlQnElemType*Qe;returnERROR;eQfor(i=0;i<h*l;i++)for(j=1;j<=;j++)if[i].j==[j].i)*(Qe+[i].i-1)*l+[j].j-1)+=[i].e*[j].e;forii<=;i++)for(j=1;j<=;j++)if(*(Qe+(i-1)*l+j-1)!=0){nQdataQneQeilj-1);}QereturnOK;}StatusTransposeSMatrix(TSMatrixM,TSMatrix*T){for(col=1;col<=;++col)forp=1;p<=;++p){e}}returnOK;}StatusFastTransposeSMatrix(TSMatrixM,TSMatrix*T)num=(int*)malloc(+1)*sizeof(int));/*生成數(shù)組([0]不用)*/cpot=(int*)malloc(+1)*sizeof(int));/*生成數(shù)組([0]不用)*/{colcolnumcol/*設(shè)初值*/numt].j];cpotcol]=cpot[col-1]+num[col-1];{olpj}}OK}in{TSMatrixA,B;CreateSMatrix(&A);PrintSMatrixAFastTransposeSMatrix(A,&B);PrintSMatrixBDestroySMatrix(&A);DestroySMatrix(&B);}typedefintSElemType*/defineSTACKINITSIZE10/*存儲(chǔ)空間初始分配量*/defineSTAC
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 63522-13:2024 EN-FR Electrical relays - Tests and measurements - Part 13: Corrosive atmospheres due to sulfur impact
- 【正版授權(quán)】 IEC 62309:2024 EN-FR Dependability of new products containing reused parts and life-extended products
- 2025-2030年中國(guó)降血脂藥行業(yè)運(yùn)營(yíng)現(xiàn)狀及發(fā)展規(guī)劃分析報(bào)告
- 2025-2030年中國(guó)銀礦石市場(chǎng)運(yùn)行動(dòng)態(tài)與發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)鋁合金防火門(mén)窗市場(chǎng)發(fā)展?fàn)顩r及營(yíng)銷戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)鋼構(gòu)件行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)遠(yuǎn)洋漁輪市場(chǎng)運(yùn)行格局及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)轎車懸架彈簧行業(yè)發(fā)展前景及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)美體塑身衣行業(yè)市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)繡花機(jī)市場(chǎng)運(yùn)行動(dòng)態(tài)及發(fā)展趨勢(shì)分析報(bào)告
- 教學(xué)課件-電力系統(tǒng)的MATLAB-SIMULINK仿真與應(yīng)用(王晶)
- GB/T 26189.2-2024工作場(chǎng)所照明第2部分:室外作業(yè)場(chǎng)所的安全保障照明要求
- 新教科版一年級(jí)科學(xué)下冊(cè)第一單元《身邊的物體》全部課件(共7課時(shí))
- 鹽城江蘇鹽城市住房和城鄉(xiāng)建設(shè)局直屬事業(yè)單位市政府投資工程集中建設(shè)管理中心招聘4人筆試歷年參考題庫(kù)附帶答案詳解
- 2024年黑龍江職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 《電商直播》 課件 項(xiàng)目一 走入電商直播
- 《中國(guó)宮腔鏡診斷與手術(shù)臨床實(shí)踐指南(2023版)》解讀課件
- GB/T 9535-1998地面用晶體硅光伏組件設(shè)計(jì)鑒定和定型
- 第1章操作系統(tǒng)引論
- 復(fù)旦校內(nèi)辦事指南
- 建筑公司項(xiàng)目部績(jī)效考核管理制度
評(píng)論
0/150
提交評(píng)論