實驗一線性表的基本操作實現及其應用

2021-08-08 13:27:10 字數 2701 閱讀 3524

一、實驗目的

1、熟練掌握線性表的結構特點,掌握順序表的基本操作。

2、鞏固 c++相關的程式設計方法與技術。

3、學會使用順序表解決實際問題。 

二、實驗內容

1、順序表的建立與操作實現

建立 n 個元素的順序表(n 的大小和表裡資料自己確定),實現相關的操作:輸出,插

入,刪除,查詢等功能。編寫完整程式實現,程式語言不限定,使用技術形式不定。

2、實際問題的解決(*)

使用順序表來實現約瑟夫環問題。

三、實驗步驟

1、依據實驗內容分別說明實驗程式中用到的資料型別的定義;

2、相關操作的演算法表達;

3、完整程式;

4、總結、執行結果和分析。

5、總體收穫和不足,疑問等。

四、實驗要求

1、按照資料結構實驗任務書,提前做好實驗預習與準備工作。

2、加「*」為選做題。做好可加分。

3、嚴格按照資料結構實驗報告模板和規範,及時完成實驗報告。

4、在個人主頁上發文章

(1)源**:

#include

#include

#define list_init_size 100

#define icreament 20

typedef int elemtype;  //使用者自定義資料元素型別

typedef struct

elemtype *elem;   //順序表的基位址

int length;       //順序表的當前長度

int listsize;     //預設空間容量

}sqlist;              //線性表的順序儲存結構

sqlist* initlist()    //建立空的順序表

sqlist* l = (sqlist*)malloc(sizeof(sqlist));//定義順序表l

if(!l)

printf("空間劃分失敗,程式退出\n");

return null;

l->elem=(elemtype *)malloc(list_init_size*sizeof(elemtype));

if(!l->elem)

printf("空間劃分失敗,程式退出\n");

return null;

l->length=0;

l->listsize=list_init_size;

return l;

int createlist(sqlist* l)  //建立順序表(非空)

int number;  //順序表中元素的個數

int i;       //迴圈變數

printf("請輸入插入元素的個數:");

scanf("%d",&number);

if(number > list_init_size)   //一定要判斷輸入的個數是否大於順序表的最大長度

printf("輸入個數大於順序表的長度\n");

return 0;

for(i=0;iprintf("輸入第%d個數: ",i+1);

}//給順序表中每個資料元素賦值

l->length=number;  //當前順序表的長度

return 1;

void print(sqlist* l)  //輸出當前順序表

int i;

printf("輸出:\n");

for(i=0;ilength;i++)

printf("第%d個數:%-3d\n",i+1,*(l->elem + i)); //l->elem+i:和輸入是乙個道理

printf("順序表長度為:%d\n", l->length);

printf("\n");

int main()

sqlist* l = initlist();  //申請乙個指向順序表的指標,並對其初始化

if(!l)      //判斷申請是否成功

printf("初始化線性表失敗\n");

return 1;

if(!createlist(l))   //判斷建立順序表是否成功

printf("建立順序表失敗\n");

return 1;

print(l);         //列印順序表

free(l->elem);    //釋放申請的順序表元素的記憶體

free(l);          //釋放申請的順序表記憶體

return 0;

(2)執行結果截圖:

(3)總結:

通過這次寫實驗報告,我深切的理解了這門課的本質。剛開始學這門課時,當時還不清楚這門課程的目

的,現在,我真正的理解了:資料結構像是身體

的骨骼。資料結構是個框架,模型,抽象資料型別中列舉了各種操作,而所用的c++語言,將各種操作描述出來構成演算法。

這次實驗讓我認識到,一定要創新,大膽,不能按照舊的思路去幹新的事情。

同時,我也悟出了很多細節上的問題。比如說,有些變數的重複定義,有些變數又沒有定義,在呼叫函式,就直接複製過來,沒有改引數……所以我明

白了細節決定成敗,在以後,不管做任何事情都要認真,細心。

這次的實驗報告,讓我受益匪淺,不僅有知識方面的,還有生活和精神上的。總之,我希望在之後的程式設計的過程中,能不斷的提公升自己。

實驗一線性表的基本操作實現及其應用

一 實驗目的 1 熟練掌握線性表的結構特點,掌握順序表的基本操作。2 鞏固 c 相關的程式設計方法與技術。3 學會使用順序表解決實際問題。二 實驗內容 三 實驗步驟 1 建立乙個模板類 2 建構函式建立列表,length,get,locate,insert,delete,printlist函式 3 ...

實驗一線性表的基本操作實現及其應用

順序表是用一段位址連續的儲存單元依次儲存線性表的資料元素,我打算借鑑書本用c 寫乙個小順序表記錄10個人的數學成績。源 標頭檔案 include includeusing namespace std 定義模板類seqlist const int maxsize 20 templateclass se...

實驗一 線性表的基本操作實現及其應用

一 實驗目的 1 熟練掌握線性表的結構特點,掌握順序表的基本操作。2 鞏固 c 相關的程式設計方法與技術。3 學會使用順序表解決實際問題。二 實驗內容 1 順序表的建立與操作實現 建立 n 個元素的順序表 n 的大小和表裡資料自己確定 實現相關的操作 輸出,插 入,刪除,查詢等功能。編寫完整程式實現...