




已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)與信息技術(shù)學(xué)院綜合性、設(shè)計(jì)性實(shí)驗(yàn)報(bào)告專業(yè):網(wǎng)絡(luò)工程 年級(jí)/班級(jí):大二 20162017學(xué)年第一學(xué)期課程名稱數(shù)據(jù)結(jié)構(gòu)指導(dǎo)教師李四學(xué)號(hào)姓名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 /最大長(zhǎng)度typedef struct ElemType *elem; /指向數(shù)據(jù)元素的基地址 int length; /線性表的當(dāng)前長(zhǎng)度 SqList;/初始化線性表算法步驟:1. 為順序表L動(dòng)態(tài)分配一個(gè)預(yù)定義大小的數(shù)組空間,使elem指向這做段空間的基地址。2. 將表的當(dāng)前長(zhǎ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; /空表長(zhǎng)度為0 return OK;/取值算法步驟:1. 判斷指定的位置序號(hào)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,則查找成功,返回該元素的序號(hào)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. 表長(zhǎng)加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; /表長(zhǎng)增1return OK;/刪除算法步驟:1. 判斷刪除位置i是否合法(合法值1in),若不合法則返回ERROR。2. 將第i+1個(gè)至第n個(gè)的元素依次向前移動(dòng)一個(gè)位置(i=n時(shí)無需移動(dòng))。3. 表長(zhǎng)減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; /表長(zhǎng)減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(請(qǐng)輸入您要輸入的數(shù)據(jù)個(gè)數(shù)n:n);scanf(%d,&n);printf(請(qǐng)輸入您要輸入的數(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(請(qǐng)輸入您要插入的數(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(請(qǐng)輸入您要取的數(shù)據(jù)序號(hào):n);scanf(%d,&i);if(GetElem_Sq(L,i,e)printf(第%d位數(shù)據(jù)的值為:%dn,i,e);elseprintf(i值越界!n); printf(請(qǐng)輸入要查找的數(shù)據(jù)值:n);scanf(%d,&e);if(!LocateELem_Sq(L,e)printf(查無此值!n);elseprintf(數(shù)據(jù)%d在%d號(hào)位置n,e,LocateELem_Sq(L,e);printf(請(qǐng)輸入要?jiǎng)h除的數(shù)據(jù)的序號(hào):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ù)序號(hào),可以查找該數(shù)據(jù)的值。輸入要查找的數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 庇護(hù)工場(chǎng)安全管理制度
- 制定公司行政管理制度
- 公司銷售主管管理制度
- 農(nóng)村水路入戶管理制度
- 垃圾拖車人員管理制度
- 網(wǎng)絡(luò)性能優(yōu)化與管理題目及答案
- 小學(xué)節(jié)能評(píng)比管理制度
- 行政組織理論的復(fù)習(xí)策略試題及答案
- 南寧小學(xué)日常管理制度
- 公共數(shù)據(jù)應(yīng)用管理制度
- 2023年危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位負(fù)責(zé)人和安全管理人員培訓(xùn)
- 內(nèi)部控制體系建設(shè)咨詢項(xiàng)目咨詢服務(wù)合同
- 材料科學(xué)基礎(chǔ)chp1-原子結(jié)構(gòu)與鍵合課件
- 肺炎克雷伯菌及耐碳青霉烯類抗生素基因KPC檢測(cè)試劑盒(熒光PCR法)(CSZ2000070)
- (完整word版)餐券模板
- 大學(xué)語(yǔ)文高職(第四版)PPT全套完整教學(xué)課件
- 大學(xué)生志愿服務(wù)西部計(jì)劃考試復(fù)習(xí)題庫(kù)(筆試、面試題)
- 《滑炒技法-滑炒雞絲菜肴制作》說課課件
- 河南??省歷年中考物理真題及答案解析,2013-2022年河南??省十年中考物理試題匯總
- 香煙出售情況記錄表(豎版10天)
- 減速機(jī)設(shè)備維修技術(shù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論