1. 程式人生 > >第三週【專案1

第三週【專案1

  1. /*  
  2. *Copyright (c)2017,煙臺大學計算機與控制工程學院  
  3. *All rights reserved.  
  4. *檔名稱:  
  5. *作    者:李佳駿 
  6. *完成日期:2017年9月20日  
  7. *版 本 號:v1.0  
  8. *問題描述:實現有關線性表的各種運算
  9. *輸入描述:函式輸入
  10. *程式輸出:函式輸出
  11. */

問題及程式碼:

目的是要測試“建立線性表”的演算法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函式裡寫清晰得多。

學習心得

線性表的演算法的程式,說易不易,說難不難,認真思考,還是比較容易想出來的。對我們以後的寫程式有很大的幫助。