C Vector線性表的陣列實現

2021-10-02 20:02:22 字數 2359 閱讀 7366

// 2020/02/14 tealer.guo

#include // copy(), find(), copy_backward()

#include #include // ostream_iterator<>

// 線性表

// adt 抽象資料型別

// 純虛函式

templateclass linearlist ;

virtual bool empty() const = 0; // 當線性表為空時,返回0

virtual int size() const = 0; // 返回線性表的元素個數

virtual t& get(int this_index) const = 0; // 返回具有this_index索引的元素

virtual int indexof(const t& this_elem) const = 0; // 返回元素的索引

virtual void erase(int this_index) = 0; // 刪除該索引的元素

virtual void insert(int this_index, const t& this_elem) = 0; // 插入索引和元素

virtual void output(std::ostream& out) const = 0; // 輸出線性表

};// arraylist 線性表陣列描述

// 繼承adt

templateclass arraylist : public linearlist // 析構函式

// adt方法

bool empty() const // 當線性表為空時,返回0

int size() const // 返回線性表的元素個數

t& get(int this_index) const; // 返回具有this_index索引的元素

int indexof(const t& this_elem) const; // 返回元素的索引

void erase(int this_index); // 刪除該索引的元素

void insert(int this_index, const t& this_elem); // 插入索引和元素

void output(std::ostream& out) const; // 輸出線性表

// 其它方法

int capacity() const // 返回當前表大小(長度)

protected:

// 訪問控制,可以被子類訪問

void checkindex(int this_index) const; // 檢查索引,索引無效就丟擲異常

t* elements; // 指向表第乙個元素位址

int array_length; // 表總長

int list_size; // 當前元素長度

};// 方法實現

templatearraylist::arraylist(int init_capacity)

array_length = init_capacity;

elements = new t[array_length]; // 建立表

list_size = 0;

}templatearraylist::arraylist(const arraylist& this_arraylist)

templatevoid arraylist::checkindex(int this_index) const

}template t& arraylist::get(int this_index) const

templateint arraylist::indexof(const t& this_elem) const else

}templatevoid arraylist::erase(int this_index)

templatevoid arraylist::insert(int this_index, const t& this_elem)

// 將元素向後移動一位

std::copy_backward(elements + this_index, elements + list_size, elements + list_size + 1);

elements[this_index] = this_elem; // 寫入表

list_size += 1; // 長度+1

}templatevoid arraylist::output(std::ostream& out) const

templatestd::ostream& operator<<(std::ostream& out, arraylist& this_elem)

線性表 陣列實現

include include includeusing namespace std define ms a memset a,0,sizeof a define maxlength 100 線性表陣列實現,定義乙個具有兩個域結構體,陣列下標為0的地方不存放元素,可以使位置i對應整數i 第乙個域是陣...

線性表陣列實現

線性表 順序表示 用陣列實現,比較簡單 線性表的順序表示指的是用一組位址連續的儲存單元一次儲存線性表的資料元素,在高階語言程式設計中,陣列具有隨機訪問的特性,因此通常都用陣列來描述資料結構中的順序儲存結構,對於線性表,可以用一維陣列來實現 1 順序表的初始化 定義乙個object型別的陣列,可儲存任...

線性表的陣列實現

分別實現3種型別的鍊錶,這一篇用陣列來實現線性表 有序鍊錶 鍊錶元素或節點始終保持有序,鍊錶元素為comparable物件,主要體現在插入操作要插入在相應的序列位置 無序鍊錶 無序,每次指定插入在哪 表頭,尾,or指定元素之後 將三種實現的都有的公共操作定義在乙個介面adt中,對應於各自特徵所特有的...