1,順序儲存線性表兩個問題:
1,當做陣列誤用;
2,效率有隱患;
2,本文解決第乙個功能上的問題,建立乙個陣列類代替順序儲存結構中的陣列訪問操作符;
1,完成 array 類的具體實現;
2,完成 staticarray 類的具體實現,替代原生陣列;
4,需求分析:
1,建立陣列類代替原生陣列的使用;
1,陣列類包含長度資訊;
2,陣列類能夠主動發現越界訪問;
5,array 設計要點:
1,抽象類模板,儲存空間的位置和大小由子類完成;
2,過載陣列操作符,判斷訪問下標是否合法(滿足上面第二點,且滿足原生陣列訪問操作);
3,提供陣列長度的抽象訪問函式(滿足上面第一點);
4,提供陣列物件間的複製操作(附加的功能);
6,array 類的宣告;
7,array 陣列抽象類實現:
18,staticarray 設計要點:#ifndef array_h
2#define array_h
34 #include "
object.h
"5 #include "
exception.h"6
7namespace
dtlib825
26return
ret;27}
2829
virtual
bool
get(int i, t& e) const
//o(1)
3037
38return
ret;39}
4041
//陣列訪問操作符
42 t& operator (int i) //
o(1)
4350
else
5154}55
56 t operator (int i) const
//o(1)
5760
61/*
直接返回原生陣列的首位址,為了能夠通過這個函式返回陣列元素,然後對陣列元素排序
*/62 t* array() const
6366
67virtual
int length() const = 0;68
};6970}
7172
#endif
//array_h
1,類模板(建立原生陣列替代品,可以直接指定資料元素型別,所以必須是類模板):
1,封裝原生陣列;
1,父類中沒有完成的具體元素應該儲存在什麼地方;
2,使用模板引數決定陣列大小;
1,用成員函式來表現;
3,實現函式返回陣列長度;
4,拷貝構造和賦值操作;
1,陣列物件可以相互賦值的,這是附加的語義;
9,staticarray 類的宣告;
10,staticarray 靜態陣列類的實現:
111,staticarray 的測試**:#ifndef staticarray_h
2#define staticarray_h
34 #include "
array.h"5
6namespace
dtlib720
21/*
實現陣列的複製操作
*/22 staticarray( const staticarray& obj) //
o(n)
2330}31
32/*
實現陣列的複製操作
*/33 staticarray& operator= ( const staticarray& obj ) //
o(n)
3441}42
43return *this;44
}4546int length() const
//o(1)
4750
};5152}
5354
#endif
//staticarray_h
1 #include 2 #include "staticarray.h"3
4using
namespace
std;
5using
namespace
dtlib;67
intmain()815
16for(int i=0; i)
1720
21 staticarrayl1;
22 l1 =l;
2324
for(int i=0; i)
2528
29 l[5] = 100;30
31return0;
32 }
資料結構 棧(靜態陣列)
棧是先進先出的一種資料結構。本文是以靜態陣列為儲存結構的棧的實現。棧的adt如下 資料元素集合 乙個元素的有序序列,只能在棧頂進行入棧和出棧的操作 基本方法 1.stack 建立乙個空棧 2.empty 檢查棧是否為空 3.push 在棧頂新增乙個元素 4.top 提取棧頂元素 5.pop 刪除棧頂...
資料結構中的陣列 動態陣列的建立
1,staticarray 確實可以代替原生陣列使用,但是在建立 staticarray 物件時,陣列大小必須明確指定,能不能建立乙個物件在使用過程中,物件的大小可以動態指定,且功能超越 staticarray 2,課程目標 1,本節課完成 dynamicarray 類的建立,2,dynamic 指...
資料結構 靜態陣列實現迴圈佇列
靜態陣列實現迴圈佇列不需要考慮空間的釋放。迴圈佇列的實現主要重點是在兩個指標的比較上。include define maxsize 10 define elemtype int define status int define ok 1 define error 0 typedef struct q...