資料結構中的陣列 靜態陣列類的建立

2022-08-18 01:21:15 字數 2577 閱讀 2840

1,順序儲存線性表兩個問題:

1,當做陣列誤用;

2,效率有隱患;

2,本文解決第乙個功能上的問題,建立乙個陣列類代替順序儲存結構中的陣列訪問操作符;

1,完成 array 類的具體實現;

2,完成 staticarray 類的具體實現,替代原生陣列;

4,需求分析:

1,建立陣列類代替原生陣列的使用;

1,陣列類包含長度資訊;

2,陣列類能夠主動發現越界訪問;

5,array 設計要點:

1,抽象類模板,儲存空間的位置和大小由子類完成;

2,過載陣列操作符,判斷訪問下標是否合法(滿足上面第二點,且滿足原生陣列訪問操作);

3,提供陣列長度的抽象訪問函式(滿足上面第一點);

4,提供陣列物件間的複製操作(附加的功能);

6,array 類的宣告;

7,array 陣列抽象類實現:

1

#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

8,staticarray 設計要點:

1,類模板(建立原生陣列替代品,可以直接指定資料元素型別,所以必須是類模板):

1,封裝原生陣列;

1,父類中沒有完成的具體元素應該儲存在什麼地方;

2,使用模板引數決定陣列大小;

1,用成員函式來表現;

3,實現函式返回陣列長度;

4,拷貝構造和賦值操作;

1,陣列物件可以相互賦值的,這是附加的語義;

9,staticarray 類的宣告;

10,staticarray 靜態陣列類的實現:

1

#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

11,staticarray 的測試**:

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...