⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 -

📁 安全数组 普通链表 哈希表 二叉搜索树 AVL树 集合类 通用自动机 所有类均使用模板编写
💻
字号:
声明:使用这些类是使用者的自愿行为,作者对源代码的质量不提供任何形式的保证,如果使用者因使用这些类而造成的任何损失都与作者无关,作者不承担任何责任。


array.h:	安全数组,可自动增长大小(可随机访问,但扩充时效率很低,所以在初始化时尽量选择合适的大小)
linkedlist.h:	普通链表(可随机访问,但随机访问效率很低,是通过循环到指定位置来实现的)
dclinkedlist.h×	双向循环链表(不可随机访问,但可正向、反向循环,且大部分操作比普通链表效率高,推荐使用)
hashtable.h:	哈希表(使用键值标识元素,键值一样的元素即认为是同一元素)
set.h:		集合(从 dclinkedlist 派生,基本一样,只是插入时保证元素不会重复)
stack.h:	堆栈(内部使用 dclinkedlist 成员,所以代码很简单且不会溢出)

binstree.h:	二叉搜索树(元素不会重复)
avltree.h×:	AVL 平衡树(元素不会重复)
gentree.h×:	一般树(使用二叉树方法实现的一般树)

DFA.h:		通用自动机(以 hashtable 实现的自动机)

×双向循环链表虽然所占内存比普通链表要大,但大部分操作都要比普通链表效率高,如果不需要随机访问,推荐使用(其实链表的随机访问效率是很低的,如果经常需要随机访问,还是使用安全数组),hashtable.h 由于代码的特殊原因,难以使用双向循环链表(以后再看吧),注意双向循环链表是如何判断到达链表尾的。
×AVL 树的插入函数成本非常高,且该类没有完全实现(例如,删除函数),但 AVL 的搜索效率极高,所以适用于在程序开始前初始化程序中经常要搜索的数据集合,一般应用二叉搜索树已经足够了。
×一般树由于不是线性表,所以很多函数、使用方法都和其它类不太相同(其实二叉搜索树和 AVL 平衡树都可看成线性表,但一般树不是)


所有类均使用模板编写,并不特定于 Windows 平台,所有只要有 C++ 编译程序的操作平台都可使用。

以上代码都是作者照书上改写的,并未经过严格测试,如果在使用过程中发现任何问题、困难、源代码错误或可改进的地方,非常欢迎来信与我讨论。电子邮件地址:pro_zw@sina.com.cn。

作者会根据所发现的问题不断改进各类并增加新的数据结构,使其不断完善。
使用者也可根据需要随意更改各代码,但希望发给本人更改后的结果,这也是希望能够参考各方面的意见而改进各类的代码,并没有其他意思。

参考书目:
《数据结构-C++ 语言描述》	William Ford	William Topp 著		清华大学出版社
《计算机程序设计艺术》		DONALD E.KNUTH	             著		清华大学出版社

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -