#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...