數據結構上機實驗報告9
數據結構上機實驗報告9 數據結構課程試驗,設計 一試驗目的 設計并模擬實現整型多維數組類型。 二試驗內容 盡管 C 程序設計語言已經供應了多維數組, 但在某些狀況下, 定義用戶所需的多維數組也是很有用的。通過設計并模擬實現整型多維數組類型,整型多維數組應具有以下基本功能: (1)定義整型多維數組類型(以 3 維為例) ,各維的下標是任意整數開頭的連續(xù)整數; (2)下標變量賦值,執(zhí)行下標范圍檢查;對輸入的合法下標,給出數組元素的值。 (3)同類型數組賦值; (4)子數組賦值,例如,a1.n=a2.n+1 ; a2.43.5=b1.32.4; (5)確定數組的大小。 三試驗步驟(可選) 具體程序設計: #includeiostream using namespace std; #define maxdim 3 #define maxnum 10 #define max 100 typedef int ElemType; typedef struct ElemType lower; ElemType upper; int boundnum; Boundi; typedef struct int dim; Boundi boundmaxdim; int total; int elemmax; NArray; NArray creatone() cout 創(chuàng)建一個多維數組 endl; int n,i,total=1,j; NArray A; cout請輸入要創(chuàng)建數組的維數:;cinn; A.dim=n; cout請輸入所創(chuàng)建數組的各維的上下標:endl; for(i=1;i=A.dim;i+) cout第i維:endl; cinA.boundi-1.lower; cinA.boundi-1.upper; A.boundi-1.boundnum=A.boundi-1.upper-A.boundi-1.lower+1; total=total*A.boundi-1.boundnum; 數據結構課程試驗,設計 for(i=0;itotal;i+) A.elemi=0; cout現在要初始化該數組的數值部分嗎?Y-1,N(此時數組中各元素均為 0)-0 ; cinj; switch(j) case 1: cout 請以行序為主序輸入該多維數組的A.total 個元素:endl; for(i=0;itotal;i+) cinA.elemi; case 0:; cout 數組創(chuàng)建勝利! endlendl; return A; int qualify(NArray A,NArray B) int i; if(B.dim!=A.dim) cout 這兩個多維數組不是同類型的,不能相互賦值!endl; return 0; for(i=0;iA.dim;i+) if(B.boundi.boundnum!=A.boundi.boundnum) cout 這兩個多維數組不是同類型的,不能相互賦值!endl; return 0; for(i=0;iA.total;i+) B.elemi=A.elemi; cout 賦值勝利!endl; return 0; void printit(NArray A) int i; cout 這是一個A.dim維數組 NArray; for(i=1;i=A.dim;i+) coutA.boundi-1.lowerA.boundi-1.upper; cout 該數組中所含元素個數為:A.totalendl; / void find(NArray A) 數據結構課程試驗,設計 int i,sum=0,multi=1,j; int amaxdim; cout 請輸入你所要查找的元素的下標:; for(i=0;iA.dim;i+) cinai; for(i=0;iA.dim;i+) for(j=i+1;jA.dim;j+)multi=multi*A.boundj.boundnum; sum=sum+multi; multi=1; cout 元素 NArray; for(i=0;iA.dim;i+) coutai; cout 的值為:elemsum=A.elemsum 找到了對應的目標值!endl; cout 要更改這個值嗎? Y-1,N-0:;cini; if(i=1) cout 請輸入替換的值:endl; cinj; A.elemsum=j; cout 替換后的數組為:endl; for(i=0;iA.total;i+) coutA.elemi ; coutendl; int main() NArray a,b,c; cout 分別創(chuàng)建三個多維數組如下: endlendl; a=creatone(); b=creatone(); c=creatone(); cout 創(chuàng)建的這三個數組的有關信息如下:endl; cout 多維數組 a:; printit(a); cout 多維數組 b:; printit(b); cout 多維數組 c:; printit(c); coutendl數組之間相互賦值的結果如下:endl; cout 將多維數組 a 的值賦給多維數組 b ; qualify(a,b); cout 將多維數組 a 的值賦給多維數組 c ; qualify(a,c); coutendl隨機存取數組中的指定元素:endl; find(a); return 0; 數據結構課程試驗,設計 四試驗的結果及分析。 試驗輸出值滿足預期。 五試驗中消失的問題、解決方法和心得體會 由于數組運算過程中的最重要的是下標之間的轉換, 所以要在編程的過程中留意。