libpasc-Algorithms是常见数据结构和算法的Delphi和对象Pascal库。该库基于C-Algorithms存储库,它是适用于Pascal语言的一组容器,并在其上可用。
图书馆已测试
获取来源并将源目录添加到项目搜索路径中。对于FPC,将源目录添加到fpc.cfg文件中。
克隆存储库git clone https://github.com/isemenkov/libpasc-algorithms 。
将要使用的单元添加到uses条款中。
测试框架由以下成分组成:
unit-tests目录中。Tarraylist是T的通用阵列,它会自动增加尺寸。
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classbinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个数组项目。排序和搜索功能所需。
有关Wiki页面上的更多详细信息。
tmultiarray是t的通用数组,它会自动增加尺寸。
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classbinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个数组项目。排序和搜索功能所需。
有关Wiki页面上的更多详细信息。
TsortedArray是一个自动调整数组大小的数组,该数组以排序顺序存储其元素。用户定义的函子确定排序顺序。所有对TSORTEDARRAY上的操作都维护了分类的属性。大多数操作都是在O(n)时间进行的,但是可以在O(log n)最坏情况下进行搜索。
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classbinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个数组项目。搜索功能所需。
有关Wiki页面上的更多详细信息。
双关联列表存储了一个值的集合。列表中的每个条目都包含指向下一个条目和上一个条目的链接。因此,有可能在任一方向上迭代列表中的条目。
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classbinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个列表项目。排序和搜索功能所需。
有关Wiki页面上的更多详细信息。
AVL树结构是平衡的二进制树,可存储一个节点的集合。每个节点都有一个与之关联的键和值。节点根据其钥匙的顺序在树内排序。对树的修改是构造的,使树始终保持平衡(在树的两侧总是大致相等的节点数量)。
平衡的二进制树有几种用途。它们可以用作映射(根据其键搜索值),也可以用作始终订购的一组键。
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个键。
有关Wiki页面上的更多详细信息。
哈希表存储一组值,该值可以由密钥解决。鉴于钥匙,可以快速查找相应的值。
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个键。
有关Wiki页面上的更多详细信息。
一个多哈希表存储一组值,该值可以由密钥解决。鉴于钥匙,可以快速查找相应的值。
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classkeyBinaryCompareFunctor和valueBinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个键。
有关Wiki页面上的更多详细信息。
一个集合存储一个值的集合。每个值只能在集合中存在一次。
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classbinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个项目。
有关Wiki页面上的更多详细信息。
堆类型。优先级最低的值存储在堆的顶部,将是第一个返回的值。
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classbinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个项目。
有关Wiki页面上的更多详细信息。
堆类型。优先级最高的值存储在堆的顶部,将是第一个返回的。
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classbinaryCompareFunctor基于utils.functor.tbinaryfunctor界面,用于比较两个项目。
有关Wiki页面上的更多详细信息。
TRIE是一个数据结构,可提供从字符串到值的快速映射。
uses
container.trie;
type
generic TTrie<V> = class有关Wiki页面上的更多详细信息。
双端队列在顺序存储一个值列表。可以从队列的任何一端添加并删除新值。
uses
container.queue;
type
generic TQueue<T> = class有关Wiki页面上的更多详细信息。
TmemoryBuffer是用于存储任意大小的内存块的有用数据结构。当对象被破坏时,可以保证删除内存块。此类基于WXWIDGETS WXMEMORYBUFFER API接口https://docs.wxwidgets.org/trunk/classwx_memory_buffer.html。
uses
container.memorybuffer;
type
TMemoryBuffer = class有关Wiki页面上的更多详细信息。