版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗一線性表的實驗一、實驗目的1、掌握用Visua1C++6.。上機調試順序表的基本方法;2、掌握順序表的基本操作,插入、刪除、查找、以及有序順序表的合并等算法的實現(xiàn);3、掌握用VisualC++6.0上機調試單鏈表的基本方法;4、掌握單鏈表的插入、刪除、查找、求表長以及有序單鏈表的合并算法的實現(xiàn);刪除、查找算法的實現(xiàn)。請同學們自己設計主函數(shù)和部分算法,調用5、進一步掌握循環(huán)單鏈表和雙鏈表的插入二、實驗內容刪除、查找算法的實現(xiàn)。請同學們自己設計主函數(shù)和部分算法,調用下面是順序表的部分基本操作實現(xiàn)的算法,這些算法,完畢下面的實驗任務。/*常用的符號常量定義*/defineOK1defincERROR0defineMAXSIZE10defineLISTJNIT_SIZE10SdefineLISTINCREMENT10defineTRUE1defineFALSE0ttdefineOK1definoERROR0defineSUCCESS1defineUNSUCCESS0defineDUPLICATE-1ttdcfineMLLKEY0//0為無記錄標志defineN10//數(shù)據(jù)元素個數(shù)if(n)printf(*SuccesstoCreateaLinkList!\n");elseprintf("ANULLLinkListhavebeencreated!\n");)//endofGreatcList()function1、順序表基本操作的實現(xiàn)。規(guī)定生成順序表時.,可以鍵盤上讀取元素,用順序存儲結構實現(xiàn)存儲。2、已知順序表la和1b中的數(shù)據(jù)元素按非遞減有序排列,將la和1b表中的數(shù)據(jù)元素,合并成為?個新的順序表lc,1c中的數(shù)據(jù)元素仍按非遞減有序排列,并且不破壞la和1b表。3.從有序順序表A中刪除那些在順序表B和順序表C中都出現(xiàn)的元素.4、將?順序存儲的線性表(設元素均為整型量)中所有零元素向表尾集中,其他元素則順序向表頭方向集中。若輸入:1230050478則輸出:12354780005、單鏈表基本操作的實現(xiàn)。規(guī)定生成單鏈表時,可以鍵盤上讀取元素,用鏈式存儲結構實現(xiàn)存儲。6、已知單鏈表la和1b中的數(shù)據(jù)元素按非遞減有序排列,將la和1b中的數(shù)據(jù)元素,合并為一個新的單鏈表1c,lc中的數(shù)據(jù)元素仍按非遞減有序排列。規(guī)定①不破壞la表和1b表的結構。②破壞la表和1b表的結構。7、編程實現(xiàn)兩個循環(huán)單鏈表的合并。8、線性表的逆置:設有一個線性表(eO,e1,-,en-2,en-|),請編寫一個函數(shù)將這個線性表原地逆置,即將線性表內容置換為(en-1,en-2,…,el,eO)。線性表中的數(shù)據(jù)可認為整數(shù)、字符或字符串,試分別采用順序存儲結構和鏈式結構來實現(xiàn)。9、約瑟夫環(huán)的實現(xiàn):設有n個人圍坐一圈,用整數(shù)序列1,2,3,……,n表達順序圍坐在圓桌周邊的人,現(xiàn)從某個位置s上的人開始報數(shù),數(shù)到m的人出列,接著從出列的下一個人又從1開始重新報數(shù),數(shù)到m的人出列,如此下去,直到所有人都出列為此。試設計擬定他們的出列順序序列的程序。如n=8,m=4,s=1時,設每個人的編號依次為1,2,3,-開始報數(shù),則得到的出列順序為4,8.5,2,1,3,7,6。檢查程序的對的性和健壯性。(1)采用數(shù)組表達作為求解過程中使用的數(shù)據(jù)結構。采用單向循環(huán)鏈表作為存儲結構模擬整個過程,循環(huán)鏈表可不設頭節(jié)點,必須注意空表和非空表的界線。#defineEQ(a,b)((a)==(b))#defineLT(a,b)((a)<(b))efineLQ(a,b)((a)<=(b))/*定義ElemType為int或別的自定義類型*/typedefintEIcmType;/*順序存儲類型*/typedefstruct{int*clcm;?int1ength;?intlistsize;}SqList;/*構造一個空線性表算法*/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下面是鏈表的部分基本操作實現(xiàn)的算法,請同學們自己設計主函數(shù)和部分算法,調用這些算法,完畢下面的實驗任務。/*定義ElemType為int或別的自定義類型*/typedefintElemType;/*鏈式存儲類型//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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國方形雙眼超薄爐行業(yè)投資前景及策略咨詢研究報告
- 2009年中國醋酸行業(yè)市場研究與競爭力分析報告
- 2024至2030年中國室外大型金屬構件雷電防護裝置行業(yè)投資前景及策略咨詢研究報告
- 2024年中國鉭鈮氧化物市場調查研究報告
- 2024年中國草藤編壁紙市場調查研究報告
- 2024年中國粉體回收濾芯市場調查研究報告
- 2024年中國溶劑回收系統(tǒng)市場調查研究報告
- 2024年中國核苷酸二鈉市場調查研究報告
- 2024年中國彩色鋁環(huán)市場調查研究報告
- 2024年中國雙螺桿擠出機減速箱市場調查研究報告
- 玉米育種基地建設項目可行性研究分析報告
- 變壓器磁芯參數(shù)表匯總
- 威斯敏斯特小要理問答(修正版)
- 制動系統(tǒng)設計計算報告
- 邏輯在高考語文中的運用
- 電梯維護保養(yǎng)規(guī)則
- 初一基礎100題合并同類項精選題
- 汽車車身車底抗石擊涂料標準
- 環(huán)境保護監(jiān)理目的和目標
- AbaqusUSDFLD使用教程
- 四川省項目建設工作咨詢3000以下收費標準
評論
0/150
提交評論