順序表實(shí)驗(yàn)報(bào)告.doc_第1頁
順序表實(shí)驗(yàn)報(bào)告.doc_第2頁
順序表實(shí)驗(yàn)報(bào)告.doc_第3頁
順序表實(shí)驗(yàn)報(bào)告.doc_第4頁
順序表實(shí)驗(yàn)報(bào)告.doc_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)與信息技術(shù)學(xué)院綜合性、設(shè)計(jì)性實(shí)驗(yàn)報(bào)告專業(yè):網(wǎng)絡(luò)工程 年級/班級:大二 20162017學(xué)年第一學(xué)期課程名稱數(shù)據(jù)結(jié)構(gòu)指導(dǎo)教師李四學(xué)號姓名16083240XX 張三項(xiàng)目名稱順序表結(jié)構(gòu)的操作實(shí)驗(yàn)類型綜合性/設(shè)計(jì)性實(shí)驗(yàn)時(shí)間2017.09.26實(shí)驗(yàn)地點(diǎn)216機(jī)房一、 實(shí)驗(yàn)?zāi)康模?)熟悉順序表的創(chuàng)建、取值、查找、插入、刪除等算法,模塊化程序設(shè)計(jì)方法。二、 實(shí)驗(yàn)儀器或設(shè)備(1)硬件設(shè)備:CPU為Pentium 4以上的計(jì)算機(jī),內(nèi)存2G以上(2)配置軟件:Microsoft Windows 7與VC+6.0三、 總體設(shè)計(jì)(設(shè)計(jì)原理、設(shè)計(jì)方案及流程等)設(shè)計(jì)原理:順序表的存儲(chǔ)結(jié)構(gòu)的特點(diǎn)是在邏輯上相鄰的數(shù)據(jù)元素,其物理次序也是相鄰的。設(shè)計(jì)方案:采用模塊化設(shè)計(jì)的方法,設(shè)計(jì)各個(gè)程序段,最終通過主函數(shù)實(shí)現(xiàn)各個(gè)程序的各個(gè)功能。設(shè)計(jì)時(shí),需要考慮用戶輸入非法數(shù)值,所以要在程序中寫入可以處理非法數(shù)值的代碼。設(shè)計(jì)流程:1. 引入所需的頭文件;2. 定義狀態(tài)值;3. 寫入順序表的各種操作的代碼;4. 寫入主函數(shù),分別調(diào)用各個(gè)函數(shù)。在調(diào)用函數(shù)時(shí),采用if結(jié)構(gòu)進(jìn)行判斷輸入值是否非法,從而執(zhí)行相應(yīng)的程序。四、 實(shí)驗(yàn)步驟(包括主要步驟、代碼分析等)#include / EOF(=Z或F6),NULL#include / srand( ) ,rand( ),exit(n)#include / malloc( ),alloc( ),realloc( )等#include / INT_MAX等#include#include#include / floor(),ceil( ),abs( )#include / cout,cin#include / clock( ),CLK_TCK,clock_t#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2 typedef int Status; / Status是函數(shù)的類型,/其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等typedef int ElemType; #define MAXSIZE 100 /最大長度typedef struct ElemType *elem; /指向數(shù)據(jù)元素的基地址 int length; /線性表的當(dāng)前長度 SqList;/初始化線性表算法步驟:1. 為順序表L動(dòng)態(tài)分配一個(gè)預(yù)定義大小的數(shù)組空間,使elem指向這做段空間的基地址。2. 將表的當(dāng)前長度設(shè)為0。Status InitList_Sq(SqList &L) /構(gòu)造一個(gè)空的順序表L L.elem=new ElemTypeMAXSIZE; /為順序表分配空間 if(!L.elem) exit(OVERFLOW); /存儲(chǔ)分配失敗printf(空順序表創(chuàng)建成功!n); L.length=0; /空表長度為0 return OK;/取值算法步驟:1. 判斷指定的位置序號i值是否合理(1iL.length),若不合理,則返回ERROR。2. 若i值合理,則將第i個(gè)數(shù)據(jù)元素L.elemi-1賦給參數(shù)e,通過e返回第i個(gè)數(shù)據(jù)元素的傳值。Status GetElem_Sq(SqList L, int i, ElemType &e) if (iL.length) return ERROR; /判斷i值是否合理,若不合理,返回ERROR e=L.elemi-1; /第i-1的單元存儲(chǔ)著第i個(gè)數(shù)據(jù) return OK;/查找算法步驟:1. 從前一個(gè)元素起,依次和e相比較,若找到與e相等的元素L.elemi,則查找成功,返回該元素的序號i+1。2. 若查遍整個(gè)順序表都沒有找到,則查找失敗,返回0。int LocateELem_Sq(SqList L,ElemType e) int i;for (i=0;i L.length;i+)if (L.elemi=e) return i+1; return 0;/插入算法步驟:1. 判斷插入位置i是否合法(i值的合法范圍是1in+1)。2. 判斷順序表的存儲(chǔ)空間是否已滿,若滿則返回ERROR。3. 將第n個(gè)至第i個(gè)位置的元素依次移動(dòng)一個(gè)位置,空出第i個(gè)位置(i=n+1)時(shí)無需移動(dòng))。4. 將要插入的新元素e放入第i個(gè)位置。5. 表長加1。Status ListInsert_Sq(SqList &L,int i ,ElemType e) int j;if(iL.length+1) return ERROR; /i值不合法if(L.length=MAXSIZE) return ERROR; /當(dāng)前存儲(chǔ)空間已滿 for(j=L.length-1;j=i-1;j-) L.elemj+1=L.elemj; /插入位置及之后的元素后移L.elemi-1=e; /將新元素e放入第i個(gè)位置+L.length; /表長增1return OK;/刪除算法步驟:1. 判斷刪除位置i是否合法(合法值1in),若不合法則返回ERROR。2. 將第i+1個(gè)至第n個(gè)的元素依次向前移動(dòng)一個(gè)位置(i=n時(shí)無需移動(dòng))。3. 表長減1。Status ListDelete_Sq(SqList &L,int i) int j;if(iL.length) return ERROR; /i值不合法for (j=i;j=L.length-1;j+)L.elemj-1=L.elemj;-L.length; /表長減1return OK;/打印1. 當(dāng)i小于L.length時(shí),循環(huán)輸出L.elemi數(shù)據(jù)元素。2. 當(dāng)i大于等于L.length時(shí),退出循環(huán)。void ListPrint_Sq(SqList L)int i;for(i=0;iL.length;i+)printf(%5d,L.elemi);void main()int i,n,e;SqList L;InitList_Sq(L);printf(請輸入您要輸入的數(shù)據(jù)個(gè)數(shù)n:n);scanf(%d,&n);printf(請輸入您要輸入的數(shù)據(jù):n);for(i=1;i=n;i+)scanf(%d,&e);ListInsert_Sq(L,i,e);printf(當(dāng)前順序表的內(nèi)容為:n);ListPrint_Sq(L);printf(n);printf(請輸入您要插入的數(shù)據(jù)e及其位置i,使用空格鍵隔開:n);scanf(%d %d,&e,&i);if(ListInsert_Sq(L,i,e)printf(當(dāng)前順序表的內(nèi)容為:n);ListPrint_Sq(L);elseprintf(i值越界!n);printf(n);printf(請輸入您要取的數(shù)據(jù)序號:n);scanf(%d,&i);if(GetElem_Sq(L,i,e)printf(第%d位數(shù)據(jù)的值為:%dn,i,e);elseprintf(i值越界!n); printf(請輸入要查找的數(shù)據(jù)值:n);scanf(%d,&e);if(!LocateELem_Sq(L,e)printf(查無此值!n);elseprintf(數(shù)據(jù)%d在%d號位置n,e,LocateELem_Sq(L,e);printf(請輸入要?jiǎng)h除的數(shù)據(jù)的序號:n);scanf(%d,&i);if(ListDelete_Sq(L,i)printf(刪除后順序表的內(nèi)容為:n);ListPrint_Sq(L);elseprintf(輸入有誤!);printf(n);五、 結(jié)果分析與總結(jié)結(jié)果分析:如圖1所示,輸入正確數(shù)據(jù)時(shí),程序各個(gè)功能執(zhí)行正常。設(shè)置輸入數(shù)據(jù)個(gè)數(shù)為5,可以輸入5個(gè)數(shù)據(jù),按回車后,可以顯示我們當(dāng)前表中的數(shù)據(jù)內(nèi)容。繼續(xù)輸入下一指令:輸入要插入的數(shù)據(jù)及位置,使用空格鍵隔開,回車后,可以看到已經(jīng)成功插入。繼續(xù)輸入所取的數(shù)據(jù)序號,可以查找該數(shù)據(jù)的值。輸入要查找的數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論