




已閱讀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ì)原理:順序表的存儲結(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動態(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); /存儲分配失敗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的單元存儲著第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. 判斷順序表的存儲空間是否已滿,若滿則返回ERROR。3. 將第n個(gè)至第i個(gè)位置的元素依次移動一個(gè)位置,空出第i個(gè)位置(i=n+1)時(shí)無需移動)。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)前存儲空間已滿 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è)的元素依次向前移動一個(gè)位置(i=n時(shí)無需移動)。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(請輸入要刪除的數(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《中醫(yī)藥發(fā)展前景》課件
- 2025年駐馬店道路貨物運(yùn)輸駕駛員考試
- 2025年山東貨運(yùn)從業(yè)資格證考試題技巧答案詳解
- 新疆天山職業(yè)技術(shù)大學(xué)《合同法分論》2023-2024學(xué)年第二學(xué)期期末試卷
- 同濟(jì)大學(xué)浙江學(xué)院《大型平臺軟件分析與設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 昆明學(xué)院《建筑施工組織課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 蘇州大學(xué)《茶藝、茶道》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海市黃浦區(qū)市級名校2024-2025學(xué)年高三英語試題下學(xué)期期末考試試題(A卷)含解析
- 銅陵職業(yè)技術(shù)學(xué)院《國際貿(mào)易與國際物流》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西省長治市上黨聯(lián)盟2025年高三總復(fù)習(xí)質(zhì)量測試(一)生物試題含解析
- 鵪鶉蛋脫殼機(jī)的設(shè)計(jì)
- 行為安全觀察behaviorbasedsafety研究復(fù)習(xí)過程
- 動火作業(yè)風(fēng)險(xiǎn)告知牌
- 鍋爐專業(yè)術(shù)語解釋及英文翻譯對照
- 綜采工作面末采安全技術(shù)措施
- 《小石潭記》作業(yè)設(shè)計(jì)
- 密封圈定位套零件的機(jī)械加工夾具設(shè)計(jì)說明書
- 旅行社等級評定申報(bào)材料完整版
- 大粒種子精播機(jī)的設(shè)計(jì)【玉米、大豆快速精密雙行播種機(jī)含9張CAD圖紙】
- CKE2500 250t履帶式起重機(jī)
- 淺談跨文化敏感度及其測量
評論
0/150
提交評論