第三週【專案1
阿新 • • 發佈:2019-01-29
- /*
- *Copyright (c)2017,煙臺大學計算機與控制工程學院
- *All rights reserved.
- *檔名稱:
- *作 者:李佳駿
- *完成日期:2017年9月20日
- *版 本 號:v1.0
- *問題描述:實現有關線性表的各種運算
- *輸入描述:函式輸入
- *程式輸出:函式輸出
- */
問題及程式碼:
目的是要測試“建立線性表”的演算法CreateList,為檢視建表的結果,需要實現“輸出線性表”的演算法DispList。在研習DispList中發現,要輸出線性表,還要判斷表是否為空,這樣,實現判斷線性表是否為空的演算法ListEmpty成為必要。這樣,再加上main函式,這個程式由4個函式構成。main函式用於寫測試相關的程式碼。
執行截圖:#include <stdio.h> #include <malloc.h> #define MaxSize 50 //Maxsize將用於後面定義儲存空間的大小 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int length; } SqList; //自定義函式宣告部分 void CreateList(SqList *&L, ElemType a[], int n);//用陣列建立線性表 void DispList(SqList *L);//輸出線性表DispList(L) bool ListEmpty(SqList *L);//判定是否為空表ListEmpty(L) //實現測試函式 int main() { SqList *sq; ElemType x[6]= {5,8,7,2,4,9}; CreateList(sq, x, 6); DispList(sq); return 0; } //下面實現要測試的各個自定義函式 void CreateList(SqList *&L, ElemType a[], int n)//用陣列建立線性表 { int i; L=(SqList *)malloc(sizeof(SqList)); for (i=0; i<n; i++) L->data[i]=a[i]; L->length=n; } void DispList(SqList *L)//輸出線性表DispList(L) { int i; if (ListEmpty(L)) return; for (i=0; i<L->length; i++) printf("%d ",L->data[i]); printf("\n"); } bool ListEmpty(SqList *L)//判定是否為空表ListEmpty(L) { return(L->length==0); }
在已經建立線性表的基礎上,求線性表的長度ListLength、求線性表L中指定位置的某個資料元素GetElem、查詢元素LocateElem的演算法都可以實現了。就在原程式的基礎上增加:
增加求線性表的長度ListLength的函式並測試;
增加求線性表L中指定位置的某個資料元素GetElem的函式並測試;
增加查詢元素LocateElem的函式並測試;
(3)其餘的4個基本運算:插入資料元素ListInsert、刪除資料元素ListDelete、初始化線性表InitList、銷燬線性表DestroyList都可以同法完成,請自行安排實踐路線。
知識點總結 :
實現線性表的運算的時候用到了C/C++的基礎知識,指標,結構體型別,指向引用的指標等等。分佈來寫比在一個main函式裡寫清晰得多。
學習心得:
線性表的演算法的程式,說易不易,說難不難,認真思考,還是比較容易想出來的。對我們以後的寫程式有很大的幫助。