資料結構學習虛函式,幾個知識點
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 ...