


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、順序表實驗報告記錄作者:日期:2計算機與信息技術學院綜合性、設計性實驗報告專業:網絡工程年級 / 班級:大二20162017 學年第一學期課程名稱數據結構指導教師李四學號姓名16083240XX 張三項目名稱順序表結構的操作實驗類型綜合性 / 設計性實驗時間2017.09.26實驗地點216 機房一、實驗目的(1)熟悉順序表的創建、取值、查找、插入、刪除等算法,模塊化程序設計方法。二、實驗儀器或設備( 1)硬件設備:( 2)配置軟件:CPU 為 Pentium 4Microsoft Windows 7以上的計算機,內存與 VC+6.02G以上三、總體設計(設計原理、設計方案及流程等)設計原理:
2、順序表的存儲結構的特點是在邏輯上相鄰的數據元素, 其物理次序也是相鄰的。設計方案:采用模塊化設計的方法, 設計各個程序段, 最終通過主函數實現各個程序的各個功能。 設計時,需要考慮用戶輸入非法數值, 所以要在程序中寫入可以處理非法數值的代碼。設計流程:1. 引入所需的頭文件;2. 定義狀態值;3. 寫入順序表的各種操作的代碼;4. 寫入主函數, 分別調用各個函數。 在調用函數時, 采用 if 結構進行判斷輸入值是否非法,從而執行相應的程序。四、實驗步驟(包括主要步驟、代碼分析等)#include<stdio.h> / EOF(=Z或 F6),NULL#include<stdl
3、ib.h> / srand( ) ,rand( ),exit(n)#include<malloc.h> / malloc( ),alloc( ),realloc( )等#include<limits.h> / INT_MAX等#include<string.h>#include<ctype.h>#include<math.h> / floor(),ceil( ),abs( )#include<iostream.h> / cout,cin#include<time.h> / clock( ),CLK_TCK
4、,clock_t#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus; / Status是函數的類型 ,/ 其值是函數結果狀態代碼,如OK等typedefintElemType;#define MAXSIZE 100/最大長度typedef structElemType*elem;/指向數據元素的基地址int length;/線性表的當前長度 SqList;/ 初始化線性表算法步驟:1.為順序表 L 動態分配一個預定義大小的數組空間,使elem 指
5、向這做段空間的基地址。2.將表的當前長度設為0。Status InitList_Sq(SqList &L)/構造一個空的順序表LL.elem=new ElemTypeMAXSIZE; / if(!L.elem) exit(OVERFLOW); /為順序表分配空間存儲分配失敗printf("空順序表創建成功!n");L.length=0;/空表長度為0return OK;/ 取值算法步驟:1.判斷指定的位置序號i 值是否合理( 1i L.length ), 若不合理,則返回 ERROR。2.若 i 值合理,則將第i 個數據元素 L.elemi-1賦給參數 e,通過 e
6、 返回第 i 個數據元素的傳值。Status GetElem_Sq(SqList L, int i, ElemType &e)if (i<1|i>L.length) return ERROR; /判斷 i 值是否合理,若不合理,返回 ERRORe=L.elemi-1; /第 i-1 的單元存儲著第 i 個數據return OK;/ 查找算法步驟:1.從前一個元素起,依次和e 相比較,若找到與e 相等的元素 L.elemi,則查找成功,返回該元素的序號i+1 。2.若查遍整個順序表都沒有找到,則查找失敗,返回0。int LocateELem_Sq(SqList L,ElemT
7、ype e)int i;for (i=0;i< L.length;i+)if (L.elemi=e) return i+1;return 0;/ 插入算法步驟:1.判斷插入位置 i 是否合法( i 值的合法范圍是1 i n+1)。2.判斷順序表的存儲空間是否已滿,若滿則返回ERROR。3.將第 n 個至第 i 個位置的元素依次移動一個位置,空出第i個位置( i=n+1 )時無需移動)。4. 將要插入的新元素 e 放入第 i 個位置。5. 表長加 1。Status ListInsert_Sq(SqList &L,int i ,ElemType e)int j;if(i<1)|
8、(i>L.length+1) return ERROR;if(L.length=MAXSIZE) return ERROR;for(j=L.length-1;j>=i-1;j-)L.elemj+1=L.elemj;/L.elemi-1=e;/+L.length;/ 表長增return OK;/i值不合法/當前存儲空間已滿插入位置及之后的元素后移將新元素 e 放入第 i 個位置1/ 刪除算法步驟:1.判斷刪除位置 i 是否合法(合法值 1 i n),若不合法則返回 ERROR。2.將第 i+1 個至第 n 個的元素依次向前移動一個位置(i=n 時無需移動) 。3. 表長減 1。Sta
9、tus ListDelete_Sq(SqList &L,int i)int j;if(i<1)|(i>L.length) return ERROR; /i值不合法for (j=i;j<=L.length-1;j+)L.elemj-1=L.elemj;-L.length;/表長減 1return OK;/ 打印1.當 i 小于 L.length時,循環輸出L.elemi數據元素。2. 當 i 大于等于 L.length 時,退出循環。 void ListPrint_Sq(SqList L)int i;for(i=0;i<L.length;i+)printf(&qu
10、ot;%5d",L.elemi);void main()int i,n,e;SqList L;InitList_Sq(L);printf("請輸入您要輸入的數據個數n:n");scanf("%d",&n);printf("請輸入您要輸入的數據:n");for(i=1;i<=n;i+)scanf("%d",&e);ListInsert_Sq(L,i,e);printf("當前順序表的內容為:n");ListPrint_Sq(L);printf("n&quo
11、t;);printf("請輸入您要插入的數據e 及其位置i ,使用空格鍵隔開:n");scanf("%d %d",&e,&i);if(ListInsert_Sq(L,i,e)printf("當前順序表的內容為:n");ListPrint_Sq(L);elseprintf("i值越界! n");printf("n");printf("請輸入您要取的數據序號:n");scanf("%d",&i);if(GetElem_Sq(L,i,e)
12、printf("第 %d位數據的值為 :%dn",i,e);elseprintf("i值越界! n");printf("請輸入要查找的數據值:n");scanf("%d",&e);if(!LocateELem_Sq(L,e)printf("查無此值 !n");elseprintf("數據 %d在 %d號位置 n",e,LocateELem_Sq(L,e);printf("請輸入要刪除的數據的序號:n");scanf("%d",&i);if(ListDelete_Sq(L,i)printf("刪除后順序表的內容為:n");ListPrint_Sq(L);elseprintf("輸入有誤! ");printf("n");五、結果分析與總結結果分析:如圖 1 所示,輸入正確數據時, 程序各個功能執行正常。 設置輸入數據個數為 5,可以輸入 5 個數據,按回車后,可以顯示我們當前表中的數據內容。 繼續輸入下一指令:輸入要插入的數據及位置,使用空格鍵隔開,回車后,可以看到已經成功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 闌尾手術護理查房
- 新解讀《公園城市評價標準 T-CHSLA 50008-2021》解讀
- 《GBT2900.56-2008電工術語控制技術》深度解析
- 《GB34659-2017汽車和掛車防飛濺系統性能要求和測量方法》深度解析
- 四川省遂寧市2024-2025學年高一下學期期末考試化學試卷
- 學生多媒介環境下的創新交互技術探究
- 教育技術在培訓領域的新進展
- 提升學生主動學習的課程設計技巧與實踐案例
- 2025至2030國內熱泵空調行業市場深度研究及發展前景投資可行性分析報告
- 2025至2030光刻膠行業發展趨勢分析與未來投資戰略咨詢研究報告
- DB11T 2442-2025 學校食堂異物管控規范
- 黨課課件含講稿:《關于加強黨的作風建設論述摘編》輔導報告
- 國家開放大學行管專科《監督學》期末紙質考試總題庫2025春期版
- GB/T 3280-2015不銹鋼冷軋鋼板和鋼帶
- 住院醫師規范化培訓臨床小講課指南(2021年版)
- T∕CQAP 2002-2022 基于水泡性口炎病毒載體的新型冠狀病毒核酸檢測用陽性假病毒質控品
- 1#球磨機襯板更換及方案
- 俄羅斯、中國、歐美電子管型號替代表
- 常用塑料改性加工工藝
- 農村低壓電力技術規程(國標正本)
- 廠房鋼結構屋面及彩鋼板施工方案資料講解
評論
0/150
提交評論