2014-12-22 11:05:57 +01:00
|
|
|
This directory contains a general purpose data structures, for use anywhere
|
|
|
|
in the backend:
|
|
|
|
|
|
|
|
binaryheap.c - a binary heap
|
|
|
|
|
2018-05-22 12:17:33 +02:00
|
|
|
bipartite_match.c - Hopcroft-Karp maximum cardinality algorithm for bipartite graphs
|
|
|
|
|
2018-04-01 02:49:41 +02:00
|
|
|
bloomfilter.c - probabilistic, space-efficient set membership testing
|
|
|
|
|
2018-05-22 12:17:33 +02:00
|
|
|
dshash.c - concurrent hash tables backed by dynamic shared memory areas
|
|
|
|
|
2015-01-23 21:06:29 +01:00
|
|
|
hyperloglog.c - a streaming cardinality estimator
|
|
|
|
|
2018-05-22 12:17:33 +02:00
|
|
|
ilist.c - single and double-linked lists
|
|
|
|
|
|
|
|
knapsack.c - knapsack problem solver
|
|
|
|
|
2014-12-22 11:05:57 +01:00
|
|
|
pairingheap.c - a pairing heap
|
|
|
|
|
2014-12-22 16:52:08 +01:00
|
|
|
rbtree.c - a red-black tree
|
|
|
|
|
2014-12-22 11:05:57 +01:00
|
|
|
stringinfo.c - an extensible string type
|
|
|
|
|
|
|
|
|
|
|
|
Aside from the inherent characteristics of the data structures, there are a
|
|
|
|
few practical differences between the binary heap and the pairing heap. The
|
|
|
|
binary heap is fully allocated at creation, and cannot be expanded beyond the
|
|
|
|
allocated size. The pairing heap on the other hand has no inherent maximum
|
|
|
|
size, but the caller needs to allocate each element being stored in the heap,
|
|
|
|
while the binary heap works with plain Datums or pointers.
|
|
|
|
|
|
|
|
The linked-lists in ilist.c can be embedded directly into other structs, as
|
|
|
|
opposed to the List interface in nodes/pg_list.h.
|