2023年計(jì)算機(jī)本科數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
2023年計(jì)算機(jī)本科數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
2023年計(jì)算機(jī)本科數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
2023年計(jì)算機(jī)本科數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
2023年計(jì)算機(jī)本科數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)驗(yàn)一線(xiàn)性表的實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、掌握用Visua1C++6.。上機(jī)調(diào)試順序表的基本方法;2、掌握順序表的基本操作,插入、刪除、查找、以及有序順序表的合并等算法的實(shí)現(xiàn);3、掌握用VisualC++6.0上機(jī)調(diào)試單鏈表的基本方法;4、掌握單鏈表的插入、刪除、查找、求表長(zhǎng)以及有序單鏈表的合并算法的實(shí)現(xiàn);刪除、查找算法的實(shí)現(xiàn)。請(qǐng)同學(xué)們自己設(shè)計(jì)主函數(shù)和部分算法,調(diào)用5、進(jìn)一步掌握循環(huán)單鏈表和雙鏈表的插入二、實(shí)驗(yàn)內(nèi)容刪除、查找算法的實(shí)現(xiàn)。請(qǐng)同學(xué)們自己設(shè)計(jì)主函數(shù)和部分算法,調(diào)用下面是順序表的部分基本操作實(shí)現(xiàn)的算法,這些算法,完畢下面的實(shí)驗(yàn)任務(wù)。/*常用的符號(hào)常量定義*/defineOK1defincERROR0defineMAXSIZE10defineLISTJNIT_SIZE10SdefineLISTINCREMENT10defineTRUE1defineFALSE0ttdefineOK1definoERROR0defineSUCCESS1defineUNSUCCESS0defineDUPLICATE-1ttdcfineMLLKEY0//0為無(wú)記錄標(biāo)志defineN10//數(shù)據(jù)元素個(gè)數(shù)if(n)printf(*SuccesstoCreateaLinkList!\n");elseprintf("ANULLLinkListhavebeencreated!\n");)//endofGreatcList()function1、順序表基本操作的實(shí)現(xiàn)。規(guī)定生成順序表時(shí).,可以鍵盤(pán)上讀取元素,用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)存儲(chǔ)。2、已知順序表la和1b中的數(shù)據(jù)元素按非遞減有序排列,將la和1b表中的數(shù)據(jù)元素,合并成為?個(gè)新的順序表lc,1c中的數(shù)據(jù)元素仍按非遞減有序排列,并且不破壞la和1b表。3.從有序順序表A中刪除那些在順序表B和順序表C中都出現(xiàn)的元素.4、將?順序存儲(chǔ)的線(xiàn)性表(設(shè)元素均為整型量)中所有零元素向表尾集中,其他元素則順序向表頭方向集中。若輸入:1230050478則輸出:12354780005、單鏈表基本操作的實(shí)現(xiàn)。規(guī)定生成單鏈表時(shí),可以鍵盤(pán)上讀取元素,用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)實(shí)現(xiàn)存儲(chǔ)。6、已知單鏈表la和1b中的數(shù)據(jù)元素按非遞減有序排列,將la和1b中的數(shù)據(jù)元素,合并為一個(gè)新的單鏈表1c,lc中的數(shù)據(jù)元素仍按非遞減有序排列。規(guī)定①不破壞la表和1b表的結(jié)構(gòu)。②破壞la表和1b表的結(jié)構(gòu)。7、編程實(shí)現(xiàn)兩個(gè)循環(huán)單鏈表的合并。8、線(xiàn)性表的逆置:設(shè)有一個(gè)線(xiàn)性表(eO,e1,-,en-2,en-|),請(qǐng)編寫(xiě)一個(gè)函數(shù)將這個(gè)線(xiàn)性表原地逆置,即將線(xiàn)性表內(nèi)容置換為(en-1,en-2,…,el,eO)。線(xiàn)性表中的數(shù)據(jù)可認(rèn)為整數(shù)、字符或字符串,試分別采用順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)來(lái)實(shí)現(xiàn)。9、約瑟夫環(huán)的實(shí)現(xiàn):設(shè)有n個(gè)人圍坐一圈,用整數(shù)序列1,2,3,……,n表達(dá)順序圍坐在圓桌周邊的人,現(xiàn)從某個(gè)位置s上的人開(kāi)始報(bào)數(shù),數(shù)到m的人出列,接著從出列的下一個(gè)人又從1開(kāi)始重新報(bào)數(shù),數(shù)到m的人出列,如此下去,直到所有人都出列為此。試設(shè)計(jì)擬定他們的出列順序序列的程序。如n=8,m=4,s=1時(shí),設(shè)每個(gè)人的編號(hào)依次為1,2,3,-開(kāi)始報(bào)數(shù),則得到的出列順序?yàn)?,8.5,2,1,3,7,6。檢查程序的對(duì)的性和健壯性。(1)采用數(shù)組表達(dá)作為求解過(guò)程中使用的數(shù)據(jù)結(jié)構(gòu)。采用單向循環(huán)鏈表作為存儲(chǔ)結(jié)構(gòu)模擬整個(gè)過(guò)程,循環(huán)鏈表可不設(shè)頭節(jié)點(diǎn),必須注意空表和非空表的界線(xiàn)。#defineEQ(a,b)((a)==(b))#defineLT(a,b)((a)<(b))efineLQ(a,b)((a)<=(b))/*定義ElemType為int或別的自定義類(lèi)型*/typedefintEIcmType;/*順序存儲(chǔ)類(lèi)型*/typedefstruct{int*clcm;?int1ength;?intlistsize;}SqList;/*構(gòu)造一個(gè)空線(xiàn)性表算法*/intInitList_Sq(SqList&L)//InitList_Sq()function{//Inititia1aSq_Liste1cm=(E1emType*)ma11oc(LIST_INTT_STZE*sizcof(ElemType));?if(!L.elcm)return(0);?L.Iength=0;L.listsize=LIST_INIT_SIZE;8return(1);}//endofInitList_Sq()function/*從順序表中查找與給定元素值相同的元素在順序表中的位置*/intLocaleE1em_Sq(SqListL,ElemTypee)//LocateElemSq0sub-function{inti=1;int*p=L.elem;whi1e(i<=L.length&&*p++!=e)++i;if(i<=L.1ength)return(i);e1sereturn(ERROR);}//LocateE1cm_Sq()end/*向順序表中插入元素*/intListinsert_sq(SqList&L,inti,inte)//ListInsert_sq(){if(i<111i>L.1ength+1)//i(location)isi1legal{printf("Initialfailure!\n11):return(ERROR);)if(L.]cngth>=L1istsize)//insertintotheendoftheSqlist{ElemType*Newbase;Newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(E1emType));if(!Newbase){printf(*0verf1ow!\n*);8return(ERROR);L.elem=Newbase:L.1istsize+=LISTINCREMENT;int*p,*q;q=&(L.elcm[i—1]);//qpointatthee1ementbeforetheinsertedonefor(p=&(L.elcm[L.1cngth-1]);p>=q;—p)?//movethedement*(p+1)=*p;*q=e;++L.1ength:rcturn(OK);}//ListInser_sq()end/*從順序表中刪除元素*/voidListDe1eteSq(SqList&L,inti,int&e)//ListDelete_Sq0function(int*p,*q;if((i<1)||(i>L.1ength))(printf(l4%disOverFlow!\n",i);gexit(0);。}p=&(L.elem[i-l]);e=*p;q=L.elem+L.length-1;for(++p:p<=q;++p)*(P—1)=*p;-L.1ength;Printf(*'SuccesstoDe1eteSq_list!\n*);}//endofListDc1ete_Sq()function/*有序順序表的合并*/intMerge_Sq(SqList&A,SqList&B,SqList&C)//Merge_Sq()function{//MergetheSqListAandBioCC.listsize=C.1ength=A.length+B.1ength;C.clem=(EIcmType*)ma1loc(C.listsizc*sizcof(ElcmType));if(IC.elem){printf("OverF1ow!\n");//fai1uretoa11ocateroominRAMreturn(0);?};inti=0,j=0://iandjistheSubscriptofA.elem[]ande1cm[]intk=0;//kistheSubscriptofelem[]whi1e((i<A.Iength)&&(j<B.Iength))//Tomergewheni<=A.Iengthandj>=B.1ength。if(A.elem[i]<=B.e1em[j])C.elem[k]=A.e1em[i]:i++;k++;?>}//endofifelse?{C.e1em[k]=B.elem[j];j++:k++;?)//endofelsewhile(i<A.length)//inserttherestofSqListA{?>C.clem[k]=A,c1cm[i];。i++;k++;?}//endofwhi1ewhi1c(j<B.1ength)//inserttherestofSqListB°{£.clem[k]=B.elem[j];j++;k++:printf(*SuccesstoMergcAandB!\n");return(1):}//endofMerge_Sq()function下面是鏈表的部分基本操作實(shí)現(xiàn)的算法,請(qǐng)同學(xué)們自己設(shè)計(jì)主函數(shù)和部分算法,調(diào)用這些算法,完畢下面的實(shí)驗(yàn)任務(wù)。/*定義ElemType為int或別的自定義類(lèi)型*/typedefintElemType;/*鏈?zhǔn)酱鎯?chǔ)類(lèi)型//typedefstruetLNode{?ElemTypedata;~structLNode*next;}LNode,*LinkList;/*單鏈表的取元素*/intGetElem_L(LinkListL,inti,int&e)//GetElem_L()function{//ListheHeadPointerofLinkListwithHeadNode,whentheNo.iexist,assignthe//va1uetovariab1eeandreturn"OK!*otherwisereturnError!*LNode*p;intj=l;p=L->next:while(p&&j<i){p=p->next:++j:}if(!plU>i){printf(*TheNO.%delementdoesnotexist!\ni):cxit(0);}//endofifc=p->data;return(e);}//endofGetE1cm_L()function/*單鏈表的插入元素*/intListInsert_L(LinkList&L,inti,inte)//ListInsert_L()sub-function{LNode*p=L;intj=0;//findthe1ocation{p=p->next;++j:)if(!p||j>i—l)?//outoflocation{printf(*Error!The1ocationisillegal!\n"):return(ERROR);)LNode*s;s=(Linklist)malloc(sizeof(LNode));//createnewLNodes->data=e;s->next=p—>next;p->next=s;return(OK):}//ListInsertL()end/*單鏈表的蒯除元素*/intListDc1ete_L(1.inkList&L,inti,int&c)//ListDelete_L()function{//DeletetheNO.ielementofLinkListandreturnbyvariableeLNode*p,*q;intj=0:P=L;whi1e(p->next&&j<i-1)(p=p->next;+4-j;}if(!p||j>i-D{pr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論