0001 #include "List/List.h" //引入列表 0002 #include "Entry/Entry.h" //引入词条 0003 #include "Quadlist.h" //引入Quadlist 0004 #include "Dictionary/Dictionary.h" //引入词典 0005 0006 template <typename K, typename V> //key、value 0007 //符合Dictionary接口的Skiplist模板类(隐含假设元素之间可比较大小) 0008 struct Skiplist : public Dictionary<K, V>, public List< Quadlist< Entry<K, V> >* > { 0009 Skiplist() { insertAsFirst( new Quadlist< Entry<K, V> > ); }; //即便为空,也有一层空列表 0010 QNodePosi< Entry<K, V> > search( K ); //由关键码查询词条 0011 Rank size() const { return empty() ? 0 : last()->data->_size; } //词条总数 0012 Rank height() { return List::size(); } //层高 == #Quadlist 0013 V* get( K ); //读取 0014 bool put(K, V); //插入(Skiplist允许词条相等,故必然成功) 0015 bool remove ( K ); //删除 0016 };