C 實現動態順序表

2021-07-30 20:08:33 字數 4342 閱讀 3625

順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。這樣的儲存方式使得線性表邏輯上相鄰的元素,其在物理儲存單元中也是相鄰的。只要知道了第乙個元素的儲存位址,就可以知道線性表中任何乙個元素的儲存位址。本文利用c++語言,在windows平台 visual studio 2015開發環境下實現。功能:應用c++語言實現順序表的各項操作。基本的成員函式:建構函式、拷貝建構函式、賦值運算子的過載、析構函式。

// 順序表構造成功之後,裡面存放了n個元素data

vector(size_t n, const datatype& data = datatype());

vector(const vector& v);  

vector& operator=(const vector& v);

~vector();   

void pushback(const datatype& data);  //尾插

void popback();  //尾刪 

void print()//列印順序表

// 給順序表重新賦值,該函式執行完裡面存放了n個元素data

void assign(size_t n, const datatype& data);

// 在順序表的pos位置上插入元素data

void insert(size_t pos, const datatype& data);

// 刪除順序表pos位置上的元素

void erase(size_t pos);

// 改變順序表中的元素為n個,如果n>原來順序表中的元素的個數,多出來的空間用data來填充

void resize(size_t n, const datatype& data = datatype());

// 清空順序表中的元素-->請自己動手驗證是否需要清理vector中的空間

void clear();

// 返回順序表中有效元素的大小

size_t size()const;

// 返回順序表中空間容量的大小

size_t capacity()const;

// 順序表是否為空,若為空返回true,否則返回null

bool empty()const;

// 通過下邊訪問順序表index位置上的元素。 思考為什麼要成對的來過載

datatype& operator(size_t index);

const datatype& operator(size_t index)const;

// 返回順序表中第乙個元素的引用,思考為什麼要返回應用,為什麼要成對過載

datatype& front();

const datatype& front()const;

// 返回順序表中最後乙個的元素的引用,思考為什麼要返回引用,為什麼要成對過載

datatype& back();

const datatype& back()const;

void _checkcapacity()// 動態擴容

int find(const datatype & data)//查詢資料

1

#ifndef __vector_h__

2#define __vector_h__

34 #include5 #include6 #include7

using

namespace

std;89

#define cow 4

10 typedef int

datatype;

1112

class

vector

1320

21//

順序表構造成功之後,裡面存放了n個元素data

22 vector(size_t n, const datatype& data =datatype())

2331 vector(const vector&v)

32 :_array(new

datatype[v._size])

33, _size(v._size)

34,_capacity(v._capacity)

3538 vector& operator=(const vector&v)

3950

return *this;51

}52 ~vector()

5361}62

63public:64

void pushback(const datatype&data)

6569

void

popback()

7074

void

print()

7580 cout <

82//

給順序表重新賦值,該函式執行完裡面存放了n個元素data

83void assign(size_t n, const datatype&data)

8489

90//

在順序表的pos位置上插入元素data

91void insert(size_t pos, const datatype&data)

92100

else

101106 _array[pos] =data;

107 _size++;

108}

109}

110111

//刪除順序表pos位置上的元素

112void

erase(size_t pos)

113120

else

121126 --_size;

127}

128}

129130

//改變順序表中的元素為n個,如果n>原來順序表中的元素的個數,多出來的空間

131//

請用data來填充

132void resize(size_t n, const datatype& data =datatype())

133142

else

143148

}149

150//

清空順序表中的元素-->請自己動手驗證是否需要清理vector中的空間

151void

clear()

152158

//返回順序表中有效元素的大小

159 size_t size()const

160163

//返回順序表中空間容量的大小

164 size_t capacity()const

165168

//順序表是否為空,若為空返回true,否則返回null

169bool empty()const

170173

174//

通過下邊訪問順序表index位置上的元素

175//

思考為什麼要成對的來過載

176 datatype& operator

(size_t index)

177181

const datatype& operator(size_t index)const

182186

//返回順序表中第乙個元素的引用,思考為什麼要返回應用,為什麼要成對過載

187 datatype&front()

188191

const datatype& front()const

192196

//返回順序表中最後乙個的元素的引用,思考為什麼要返回引用,為什麼要成對過載

197 datatype&back()

198201

const datatype& back()const

202205

private

:206

//動態擴容-->該函式中有坑,請找出坑在哪?

207void

_checkcapacity()

208220

}221

int find(const datatype &data)

222229

return -1

;230

}231

private

:232 datatype*_array;

233 size_t _size; //

儲存有效元素的個數

234 size_t _capacity; //

空間的實際大小

235};

236237

#endif

//__vector_h__

C語言動態實現順序表

順序表的動態儲存結構 typedef int datatype typedef struct seqlistd seqlistd,pseqlistd 部分函式操作 void initseqlistd pseqlistd pseq 初始化 void checkcapacity pseqlistd ps...

動態實現順序表

順序表是在計算機記憶體中以 陣列的形式儲存的線性表,是指用一組位址連續的 儲存單元 依次儲存 資料元素 的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的 儲存單元中。下面來進行順序表的動態實現 標頭檔案 ifndef seqlist ...

實現動態順序表

標頭檔案seqlist.h中 pragma once include include typedef int datatype typedef struct seqlist seqlist 列印順序表 void printseqlist seqlist pseq printf n 增大容量 void...