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

2021-08-18 06:29:22 字數 2988 閱讀 1120

一、問題描述

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

2、實際問題的解決(選做)

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

二、基本要求

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

2、做好選做題可加分。

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

4、在csdn上建立個人部落格,並在上面發文章形式上交作業。

三、概要設計

1、由於實驗規定因此使用c++語言編寫線性表。

2、演算法的設計

①建構函式定義

②按位查詢定義

偽**:在順序表中找到下標為i-1的位置。

③按值查詢定義

偽**:按從前到後順序對順序表中元素進行比較,如果比較後元素的值與所需要的值相等,則輸出元素所在順序表的位置。

④插入演算法定義

偽**:如果元素數量超過定義數量的最大值,丟擲「上溢」異常。

如果元素插入位置錯誤,丟擲「位置錯誤」異常。

將最後乙個元素到元素i分別向後移一位。

順序表長度加1.

⑤刪除演算法定義

偽**:如果列表為空,丟擲「下溢」異常。

如果刪除位置錯誤,丟擲「位置錯誤」異常。

通過按位查詢找到需要刪除的元素,並進行刪除。

將下標為i到最後一位的元素依次向前移一位。

順序表長度減1。

⑥遍歷演算法定義

偽**:通過元素下標的連續性,用迴圈將元素的值按順序輸出。

3、抽象資料型別的設計

class student            //student類型別資料定義 

student(int a,int n);

~student(){}

int length()

int get(int i);

int locate(int x);

void insert(int i,int x);

int delete(int i);

int printlist();

int length(int x)

private:

int data[maxsize];

int length;

};

四、詳細設計1、抽象資料型別設計

class student            //student類型別資料定義 

student(int a,int n);

~student(){}

int length()

int get(int i);

int locate(int x);

void insert(int i,int x);

int delete(int i);

int printlist();

int length(int x)

private:

int data[maxsize];

int length;

};

2、成員函式

student::student(int a,int n)  //建構函式定義 

void student::insert(int i,int x)  //插入演算法

int student::delete(int i)    //刪除演算法

; student x(s,10);

cout<

x.printlist();

cout五、執行與測試

1、執行除錯中問題:

①、一開始仿照書中使用模板定義,發現並沒有那麼簡單然後放棄使用模板(直接把template刪掉)。

②、突然忘記函式的形參作用是什麼,最後還是看回c語言的書。」形式引數」作用是接收呼叫函式時傳遞的引數,也就是定義函式時需要使用到的值。

2、設計學生資料共10個,分別為1、2、3、4、5、6、7、8、9、10。

3、程式整體:

#includeusing namespace std;

const int maxsize=20;

class student //student類主體

student(int a,int n);

~student(){}

int length()

int get(int i);

int locate(int x);

void insert(int i,int x);

int delete(int i);

int printlist();

int length(int x)

private:

int data[maxsize];

int length;

};student::student(int a,int n) //建構函式定義

//插入演算法

void student::insert(int i,int x)

//刪除演算法

int student::delete(int i)

{ int x;

if(length==0)throw"下溢";

if(i<1||i>length)throw"位置";

x=data[i-1];

for(int j=1;j//遍歷演算法

int student::printlist()

{ for(int i=0;i//基本操作

六、總結心得

實驗一 線性表的基本操作實現

1 實驗目的 學習線性表的順序儲存結構,掌握線性表的建立,查詢,插入,刪除和輸出等基本操作。2 實驗內容 用c 的模板機制來實現線性表的基本操作 學習掌握線性表的順序儲存結構 鏈式儲存結構的設計與操作。對順序表建立 插入 刪除的基本操作,對單鏈表建立 插入 刪除的基本操作演算法。3 實驗中用到的資料...

實驗一 線性表的基本操作

一 線性結構的順序表基本操作 實驗目的 1.學會定義單鏈表的結點型別 線性表的順序儲存型別,實現c程式的基本結構,對線性表的一些基本操作和具體的函式定義。2.掌握順序表的基本操作,實現順序表的插入 刪除 查詢以及求並集等運算。3.掌握對多函式程式的輸入 編輯 除錯和執行過程。實驗要求 1 預習c語言...

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

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