順序表實驗報告記錄_第1頁
順序表實驗報告記錄_第2頁
順序表實驗報告記錄_第3頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論