字典結構及借助順序表的實現

2021-07-12 05:10:22 字數 2309 閱讀 3805

#ifndef dicadt_h

#define dicadt_h

template class dictionary

dictionary(const dictionary&){}

public:

dictionary(){}

virtual ~dictionary(){}

//初始化字典

virtual

void clear() = 0;

//插入一條記錄

//k: 插入的key

//e: 插入的record

virtual

void insert(const key& k, const e& e) = 0;

//刪除並返回此記錄

//k: 將被刪除的key

//return: 一條匹配的記錄。如果有多條記錄匹配key,任意刪除一條,沒匹配記錄則返回null

virtual e remove(const key& k) = 0;

//任意刪除一條記錄

//return: 返回被刪除的記錄,不存在返回null

virtual e removeany() = 0;

//return:一條匹配k的記錄

//多條匹配則返回任意一條

virtual e find(const key& k) const = 0;

//返回記錄總數

virtual

int size() = 0;

};#endif

template

key, typename e>

class

kvpair

kvpair

(key

kval, e

eval)

kvpair

(const

kvpair& o)

key key()

void setkey(key

ink)

e value()

};

template 

class ualdict : public dictionary

~ualdict()

void clear()

e remove(const key& k)

//刪除最後乙個元素

e removeany()

e find(const key& k) const

return

null;

}int size()

};

//有序表

template

class salist : protected alist

>

~salist(){}

//重定義insert函式保證values有序

void insert(kvpair& it)

alist

>

::insert(it);//執行alist的insert函式

}alist

>

::clear;

alist

>

::remove;

alist

>

::movetostart;

alist

>

::movetoend;

alist

>

::prev;

alist

>

::next;

alist

>

::length;

alist

>

::currpos;

alist

>

::movetopos;

alist

>

::getvalue;

};

template

class saldict : public dictionary

~saldict(){}

//insert乙個元素;保證有序

void insert(const key& k, const e& e)

//查詢將要刪除的元素並刪除

e remove(const key& k)

e removeany()

//查詢採用二分查詢提高檢索效率

e find(const key& k) const

return null;

}int size()

};

線性表的順序儲存結構及實現

線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的 注意,這句話只適用大部分線性表,而不是全部。比如,迴圈鍊錶邏輯層次上也是一種線性表 儲存層次上屬於鏈式儲存 但是把最後乙個資料元素的尾指標指向了...

資料結構(一) 順序表及實現

一 概念 先了解一下線性表,畢竟順序表和煉表都是線性表。線性表就是有線性結構的表。什麼是線性結構呢?線性結構是n個資料元素的有序集合。它有四個基本特徵 1 集合中必存在唯一的乙個 第乙個元素 2 集合中必存在唯一的乙個 最後的元素 3 除最後元素之外,其它資料元素均有唯一的 後繼 4 除第一元素之外...

資料結構 順序表的定義及python實現

class seqlist object def init self,size 50 初始化線性表 定義線性表的最大長度為50 self.max size self.num 0 self.data none self.max def is empty self 判斷線性表是否為空 return se...