資料結構之線性結構

2021-09-24 19:30:34 字數 2466 閱讀 5360

資料結構學習虛函式,幾個知識點

1:抽象類函式本身不能直接例項化,需要其子類例項化虛函式,才能例項化。繼承抽象類的子類必須重寫虛函式,具體函式可實現,也可不實現。

2:const修飾符,若修飾函式,則函式引數不能被改變。若修飾成員變數,則成員變數在使用過程中不被改變。修飾傳入引數,則避免引數被改變。

3:模板類的實現最好在乙個標頭檔案中實現,若是分別實現可能出現異常。

4:函式過載的實現,在標頭檔案中定義,並在cpp檔案中進行具體的實現,應用操作符operator實現。

template class linearlist

; /*brief 返回true,當且今當鍊錶為空 */

virtual bool

empty() const = 0;

/*brief 返回線性表的大小 */

virtual int

size() const = 0;

/*brief 返回線性表中索引號為theindex的元素*/

virtual t&

get(int theindex) const = 0;

/*brief 返回線性表中第一次出現的x索引。若x不存在,則返回-1 */

virtual int

indexof(const t& element) const = 0;

/*brief 刪除索引為index的元素,索引大於index的元素索引減1 */

virtual void

erase(int theindex) = 0; //這個 = 0 前加上const就表示常量函式

//表示函式不能被修改,和繼承類要一致

/*brief 把x插入線性表中索引為index的位置上,索引位置大於index的元素索引加1 */

virtual void

insert(int theindex, const t& theelement) = 0;

/*brief 從左至右輸出表元素 */

virtual void output(std::ostream& out) const = 0;

};

#pragma once

#include "illegalparametervalue.h" //自定義異常類

#include "linearlist.h"

template class arraylist : public linearlist

///方法

bool empty() const

int size() const

t& get(int theindex)const;

int indexof(const t& theelement) const;

void erase(int theindex);

void insert(int theindex, const t& theelement);

void output(std::ostream & out) const;

t& operator(int);

int capcity() const

protected:

/*brief 若索引無效,則丟擲異常 */

void checkindex(int theindex) const;

t* element;

int arraylength; // 陣列所占用的總空間

int listsize; // 陣列個數

};templateinline arraylist::arraylist(int initialcapacity)

arraylength = initialcapacity;

element = new t[arraylength];

listsize = 0;

}templatearraylist::arraylist(const arraylist& thelist)

templatet & arraylist::get(int theindex) const

templateint arraylist::indexof(const t & theelement) const

templatevoid arraylist::erase(int theindex)

templatevoid arraylist::insert(int theindex, const t & theelement)

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

templatevoid arraylist::checkindex(int theindex) const

templatet& arraylist::operator(int theindex)

在arraylist類中的幾個方法都沒有進行具體的實現,但過載虛函式。

參考:

資料結構之線性結構和非線性結構

線性結構作為最常用的資料結構,其特點是資料元素之間存在一對一的線性關係 線性結構有兩種不同的儲存結構,即順序儲存結構和鏈式儲存結構。順序儲存的線性表稱為順序表,順序表中的儲存元素是連續的 鏈式儲存的線性表稱為鍊錶,鍊錶中的儲存元素不一定是連續的,元素節點中存放資料元素以及相鄰元素的位址資訊 常見的線...

資料結構實驗之線性結構

輸入格式說明 以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式說明 以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。樣例輸入與輸出 序號輸入輸出1 3 4 5 2 6 1 2 0 12 3 10 1 6 ...

資料結構之線性結構之佇列

佇列 操作受限制的線性表 先進先出,一端插入,另一端輸出 如果是正常的線狀佇列,前面刪除資料部分的空間無法使用,會造成浪費 所有出現迴圈佇列 迴圈佇列會出現的問題 空滿時front rear都是相等,無法區分 原因 n種長度值對應n 1種情況 解決方法 使用額外標記 size或者tag 僅僅使用n ...