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頁面上的更多詳細信息。