List of data structures: Difference between revisions
Siddharthist (talk | contribs) →Other: Add e-graph |
Tags: Mobile edit Mobile web edit |
||
(18 intermediate revisions by 15 users not shown) | |||
Line 8: | Line 8: | ||
*[[Boolean data type|Boolean]], [[Truth value|true]] or [[false (logic)|false]]. |
*[[Boolean data type|Boolean]], [[Truth value|true]] or [[false (logic)|false]]. |
||
*[[Character (computing)|Character]] |
*[[Character (computing)|Character]] |
||
*[[Floating-point arithmetic|Floating-point]] |
*[[Floating-point arithmetic|Floating-point]] representation of a finite subset of the [[rationals]]. |
||
** Including [[single-precision floating-point format|single-precision]] and [[double-precision floating-point format|double-precision]] [[IEEE 754]] floats, among [[:Category:Floating point types|others]] |
** Including [[single-precision floating-point format|single-precision]] and [[double-precision floating-point format|double-precision]] [[IEEE 754]] floats, among [[:Category:Floating point types|others]] |
||
*[[Fixed-point arithmetic|Fixed-point |
*[[Fixed-point arithmetic|Fixed-point]] representation of the rationals |
||
*[[Integer (computer science)|Integer]], |
*[[Integer (computer science)|Integer]], a direct representation of either the [[Integer|integers]] or the [[non-negative integers]] |
||
*[[Reference (computer science)|Reference]] |
*[[Reference (computer science)|Reference]], sometimes erroneously referred to as a [[Pointer (computer programming)|pointer]] or handle, is a value that refers to another value, possibly including itself |
||
*[[Symbol (programming)|Symbol]], a unique identifier |
|||
*[[Enumerated type]], a |
*[[Enumerated type]], a [[set (mathematics)|set]] of symbols |
||
*[[Complex data type|Complex]], representation of [[complex numbers]] |
|||
=== Composite types or non-primitive type === |
=== Composite types or non-primitive type === |
||
{{main|Composite type}} |
{{main|Composite type}} |
||
*[[Array (data |
*[[Array (data type)|Array]], a sequence of elements of the same type stored contiguously in memory |
||
*[[Record (computer science)|Record]] (also called a structure or [[struct (C programming language)|struct]]), a collection of fields |
*[[Record (computer science)|Record]] (also called a structure or [[struct (C programming language)|struct]]), a collection of fields |
||
**[[Product type]] (also called a tuple), a record in which the fields are not named |
**[[Product type]] (also called a tuple), a record in which the fields are not named |
||
Line 74: | Line 76: | ||
|} |
|} |
||
"Ordered" means that the elements of the data type have some kind of explicit order to them, where an element can be considered "before" or "after" another element. This order is usually determined by the order in which the elements are added to the structure, but the elements can be rearranged in some contexts, such as sorting a list. For a structure that isn't ordered, on the other hand, no assumptions can be made about the ordering of the elements (although a physical implementation of these data types will often apply some kind of arbitrary ordering). "Uniqueness" means that duplicate elements are not allowed. Depending on the implementation of the data type, attempting to add a duplicate element may either be ignored, overwrite the existing element, or raise an error. The detection for duplicates is based on some inbuilt (or alternatively, user-defined) rule for comparing elements. |
"Ordered" means that the elements of the data type have some kind of explicit order to them, where an element can be considered "before" or "after" another element. This order is usually determined by the order in which the elements are added to the structure, but the elements can be rearranged in some contexts, such as [[Sorting algorithm|sorting]] a list. For a structure that isn't ordered, on the other hand, no assumptions can be made about the ordering of the elements (although a physical implementation of these data types will often apply some kind of arbitrary ordering). "Uniqueness" means that duplicate elements are not allowed. Depending on the implementation of the data type, attempting to add a duplicate element may either be ignored, overwrite the existing element, or raise an error. The detection for duplicates is based on some inbuilt (or alternatively, user-defined) rule for comparing elements. |
||
== Linear data structures == |
== Linear data structures == |
||
Line 81: | Line 83: | ||
=== Arrays === |
=== Arrays === |
||
*[[Array data structure|Array]] |
*[[Array data structure|Array]] |
||
*[[Associative array]] |
|||
*[[Bit array]] |
*[[Bit array]] |
||
*[[Bit field]] |
*[[Bit field]] |
||
Line 250: | Line 253: | ||
*[[Expression tree]] |
*[[Expression tree]] |
||
*[[Log-structured merge-tree]] |
*[[Log-structured merge-tree]] |
||
*[[PQ tree]] |
|||
== {{Anchor|Hashes}}Hash-based structures == |
== {{Anchor|Hashes}}Hash-based structures == |
||
* [[Approximate Membership Query Filter]] |
|||
*[[Bloom filter]] |
|||
*[[ |
**[[Bloom filter]] |
||
*[[Cuckoo filter]] |
**[[Cuckoo filter]] |
||
*[[ |
**[[Quotient filter]] |
||
*[[Count–min sketch]] |
*[[Count–min sketch]] |
||
*[[Distributed hash table]] |
*[[Distributed hash table]] |
||
Line 269: | Line 273: | ||
*[[Rolling hash]] |
*[[Rolling hash]] |
||
*[[MinHash]] |
*[[MinHash]] |
||
*[[Quotient filter]] |
|||
*[[Ctrie]] |
*[[Ctrie]] |
||
Line 303: | Line 306: | ||
* [[Purely functional data structure]] |
* [[Purely functional data structure]] |
||
* [[Blockchain]], a hash-based chained data structure that can persist state history over time |
* [[Blockchain]], a hash-based chained data structure that can persist state history over time |
||
⚫ | |||
==External links== |
==External links== |
||
*[http://tommyds.sourceforge.net/doc/benchmark.html Tommy Benchmarks] Comparison of several data structures. |
*[http://tommyds.sourceforge.net/doc/benchmark.html Tommy Benchmarks] Comparison of several data structures. |
||
⚫ | |||
[[Category:Data structures|*]] |
[[Category:Data structures|*]] |
Latest revision as of 15:09, 9 October 2024
This is a list of well-known data structures. For a wider list of terms, see list of terms relating to algorithms and data structures. For a comparison of running times for a subset of this list see comparison of data structures.
Data types
[edit]Primitive types
[edit]- Boolean, true or false.
- Character
- Floating-point representation of a finite subset of the rationals.
- Including single-precision and double-precision IEEE 754 floats, among others
- Fixed-point representation of the rationals
- Integer, a direct representation of either the integers or the non-negative integers
- Reference, sometimes erroneously referred to as a pointer or handle, is a value that refers to another value, possibly including itself
- Symbol, a unique identifier
- Enumerated type, a set of symbols
- Complex, representation of complex numbers
Composite types or non-primitive type
[edit]- Array, a sequence of elements of the same type stored contiguously in memory
- Record (also called a structure or struct), a collection of fields
- Product type (also called a tuple), a record in which the fields are not named
- String, a sequence of characters representing text
- Union, a datum which may be one of a set of types
- Tagged union (also called a variant, discriminated union or sum type), a union with a tag specifying which type the data is
Abstract data types
[edit]- Container
- List
- Tuple
- Associative array, Map
- Multimap
- Set
- Multiset (bag)
- Stack
- Queue (example Priority queue)
- Double-ended queue
- Graph (example Tree, Heap)
Some properties of abstract data types:
This article needs attention from an expert in Computer science. The specific problem is: further features needed.(June 2022) |
Structure | Ordered? | Uniqueness? |
---|---|---|
List | yes | no |
Associative array | no | keys (indexes) only |
Set | no | yes |
Stack | yes | no |
Multimap | no | no |
Multiset (bag) | no | no |
Queue | yes | no |
"Ordered" means that the elements of the data type have some kind of explicit order to them, where an element can be considered "before" or "after" another element. This order is usually determined by the order in which the elements are added to the structure, but the elements can be rearranged in some contexts, such as sorting a list. For a structure that isn't ordered, on the other hand, no assumptions can be made about the ordering of the elements (although a physical implementation of these data types will often apply some kind of arbitrary ordering). "Uniqueness" means that duplicate elements are not allowed. Depending on the implementation of the data type, attempting to add a duplicate element may either be ignored, overwrite the existing element, or raise an error. The detection for duplicates is based on some inbuilt (or alternatively, user-defined) rule for comparing elements.
Linear data structures
[edit]A data structure is said to be linear if its elements form a sequence.
Arrays
[edit]- Array
- Associative array
- Bit array
- Bit field
- Bitboard
- Bitmap
- Circular buffer
- Control table
- Image
- Dope vector
- Dynamic array
- Gap buffer
- Hashed array tree
- Lookup table
- Matrix
- Parallel array
- Sorted array
- Sparse matrix
- Iliffe vector
- Variable-length array
Lists
[edit]- Doubly linked list
- Array list
- Linked list also known as a Singly linked list
- Association list
- Self-organizing list
- Skip list
- Unrolled linked list
- VList
- Conc-tree list
- Xor linked list
- Zipper
- Doubly connected edge list also known as half-edge
- Difference list
- Free list
Trees
[edit]Trees are a subset of directed acyclic graphs.
Binary trees
[edit]- AA tree
- AVL tree
- Binary search tree
- Binary tree
- Cartesian tree
- Conc-tree list
- Left-child right-sibling binary tree
- Order statistic tree
- Pagoda
- Randomized binary search tree
- Red–black tree
- Rope
- Scapegoat tree
- Self-balancing binary search tree
- Splay tree
- T-tree
- Tango tree
- Threaded binary tree
- Top tree
- Treap
- WAVL tree
- Weight-balanced tree
- Zip tree
B-trees
[edit]Heaps
[edit]- Heap
- Min-max heap
- Binary heap
- B-heap
- Weak heap
- Binomial heap
- Fibonacci heap
- AF-heap
- Leonardo heap
- 2–3 heap
- Soft heap
- Pairing heap
- Leftist heap
- Treap
- Beap
- Skew heap
- Ternary heap
- D-ary heap
- Brodal queue
Bit-slice trees
[edit]In these data structures each tree node compares a bit slice of key values.
- Radix tree
- Suffix tree
- Suffix array
- Compressed suffix array
- FM-index
- Generalised suffix tree
- B-tree
- Judy array
- Trie
- X-fast trie
- Y-fast trie
- Merkle tree
Multi-way trees
[edit]- Ternary search tree
- Ternary tree
- K-ary tree
- And–or tree
- (a,b)-tree
- Link/cut tree
- SPQR-tree
- Spaghetti stack
- Disjoint-set data structure (Union-find data structure)
- Fusion tree
- Enfilade
- Exponential tree
- Fenwick tree
- Van Emde Boas tree
- Rose tree
Space-partitioning trees
[edit]These are data structures used for space partitioning or binary space partitioning.
- Segment tree
- Interval tree
- Range tree
- Bin
- K-d tree
- Implicit k-d tree
- Min/max k-d tree
- Relaxed k-d tree
- Adaptive k-d tree
- Quadtree
- Octree
- Linear octree
- Z-order
- UB-tree
- R-tree
- R+ tree
- R* tree
- Hilbert R-tree
- X-tree
- Metric tree
- Cover tree
- M-tree
- VP-tree
- BK-tree
- Bounding interval hierarchy
- Bounding volume hierarchy
- BSP tree
- Rapidly exploring random tree
Application-specific trees
[edit]- Abstract syntax tree
- Parse tree
- Decision tree
- Alternating decision tree
- Minimax tree
- Expectiminimax tree
- Finger tree
- Expression tree
- Log-structured merge-tree
- PQ tree
Hash-based structures
[edit]- Approximate Membership Query Filter
- Count–min sketch
- Distributed hash table
- Double hashing
- Dynamic perfect hash table
- Hash array mapped trie
- Hash list
- Hash table
- Hash tree
- Hash trie
- Koorde
- Prefix hash tree
- Rolling hash
- MinHash
- Ctrie
Graphs
[edit]Many graph-based data structures are used in computer science and related fields:
- Graph
- Adjacency list
- Adjacency matrix
- Graph-structured stack
- Scene graph
- Decision tree
- Zero-suppressed decision diagram
- And-inverter graph
- Directed graph
- Directed acyclic graph
- Propositional directed acyclic graph
- Multigraph
- Hypergraph
Other
[edit]See also
[edit]- List of algorithms
- Purely functional data structure
- Blockchain, a hash-based chained data structure that can persist state history over time
External links
[edit]- Tommy Benchmarks Comparison of several data structures.