C++ 数据结构学习 ---- 跳转表

目录

1. 头文件

1.1 词典头文件

1.2 词条头文件

1.3 列表头文件

1.4 四链表头文件

1.5 四链表节点头文件

1.6 跳转表头文件

2. 相关函数

2.1 查找函数

2.2 删除函数

2.3 插入函数

3. 完整代码

4. 运行结果及截图


1. 头文件

1.1 词典头文件


template <typename K, typename V> struct Dictionary { //词典Dictionary模板类
	virtual int size() const = 0; //当前词条总数
	virtual bool put(K, V) = 0; //插入词条(禁止雷同词条时可能失败)
	virtual V* get(K k) = 0; //读取词条
	virtual bool remove(K k) = 0; //删除词条
};

1.2 词条头文件

//词条模板类
template <typename K, typename V> struct Entry { 
	K key; V value; //关键码、数值
	Entry(K k = K(), V v = V()) : key(k), value(v) {}; //默认构造函数
	Entry(Entry<K, V> const& e) : key(e.key), value(e.value) {}; //基于克隆的构造函数
	bool operator< (Entry<K, V> const& e) { return key < e.key; }  //比较器:小于
	bool operator> (Entry<K, V> const& e) { return key > e.key; }  //比较器:大于
	bool operator== (Entry<K, V> const& e) { return key == e.key; } //判等器:等于
	bool operator!= (Entry<K, V> const& e) { return key != e.key; } //判等器:不等于
}; //得益于比较器和判等器,从此往后,不必严格区分词条及其对应的关键码

1.3 列表头文件

请点击

C++ 数据结构学习 ---- 列表_孤城寻欢的博客-优快云博客_c++列表

1.4 四链表头文件

#include "QuadListNode.h" //引入Quadlist节点类

template <typename T> struct Quadlist { //四联列表
	int _size; //规模
	QNodePosi<T> header, trailer; //头哨兵、尾哨兵
	void init(); //初始化
	int clear(); //清除所有节点
	Quadlist() { init(); } //构造
	~Quadlist() { clear(); delete header; delete trailer; } //析构
	T remove(QNodePosi<T> p); //删除(合法)位置p处的节点,返回被删除节点的数值
	QNodePosi<T> insert(T const& e, QNodePosi<T> p, QNodePosi<T> b = NULL); //将e作为p的后继、b的上邻插入
	void traverse(void (*) (T&)); //遍历各节点,依次实施指定操作(函数指针,只读或局部修改)
	template <typename VST> void traverse(VST&); //遍历
}; //Quadlist

 //Quadlist初始化,创建Quadlist对象时统一调用
template <typename T> void Quadlist<T>::init() {
	header = new QNode<T>; //创建头哨兵节点
	trailer = new QNode<T>; //创建尾哨兵节点
	header->succ = trailer; header->pred = NULL; //沿横向联接哨兵
	trailer->pred = header; trailer->succ = NULL; //沿横向联接哨兵
	header->above = trailer->above = NULL; //纵向的后继置空
	header->below = trailer->below = NULL; //纵向的前驱置空
	_size = 0; //记录规模
} //如此构造的四联表,不含任何实质的节点,且暂时与其它四联表相互独立


//将e作为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值