一、問題描述
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 的大小和表裡資料自己確定 實現相關的操作 輸出,插 入,刪除,查詢等功能。編寫完整程式實現...