WikiLean · Data structure About History view on Wikipedia ↗
0 formalized 2 partial 11 not formalized 0 unannotated math
A data structure known as a hash table.

In computer science, a data structure is a way to organize and store data that is usually chosen for efficient access to data.[1][2][3] More precisely, a data structure is the physical implementation of a data type, including specifications of the data organization and storage format, as well functions or operations for working with this data. Data structures are closely related to abstract data types (ADTs).[4] The data structure describes the representation of data in memory and how operations are carried out, while the ADT describes the logical form or algebraic structure of the data type—what operations are allowed and what results they produce—without describing how those operations are implemented.[4] Some authors do not use the term "abstract data type" and simply refer to the logical and physical forms of the data structure.[5]

Usage

[edit]

Efficient data structures are essential for managing large datasets and are fundamental to algorithm design. Relational databases commonly use B-tree indice for data retrieval,[6] while compiler implementations usually use hash tables to look up identifiers.[7] Filesystems and search engines make extensive use of specialized data structures.[8][9] Rob Pike has stated that the choice of data structure almost always has a greater impact on efficiency than the choice of algorithm, as the algorithm is often self-evident.[10] Data structures are used to organize data in both primary memory (RAM) and secondary storage (such as disks).[11]

Implementation

[edit]

Implementing a data structure involves writing a set of subroutines—such as insertion, deletion, traversal, or lookup—that create and manipulate instances of that structure. Data structures can be implemented using a variety of programming languages and techniques. A data structure corresponds directly to a single concrete implementation, in contrast to an ADT which describes behavior and operations independently of any particular implementation. There may be multiple concrete data structures for the same ADT, for example a linked list or a resizable array for the list ADT.[12] As such, the efficiency of a data structure is closely tied to its concrete implementation, and must be evaluated through benchmarks and theoretical simulation.[13]

Data structures generally rely on the ability of a computer to store and access data via memory addresses (as specified by a pointer—a bit string—or more abstractly via references) that can be itself stored in memory and manipulated by the program. For example, arrays and records store elements in contiguous memory locations, requiring a rigid layout but allowing fast indexed access by computing the address through arithmetic operations. In contrast, linked data structures (such as linked lists and trees) store addresses of related elements within their structure, enabling flexible memory usage and dynamic resizing. These different methods of data structuring come with different tradeoffs and are suited to different tasks. For instance, the contiguous memory allocation in arrays facilitates rapid access and modification operations, leading to optimized performance in sequential data processing scenarios.[14]

Examples

[edit]
The standard type hierarchy of the programming language Python 3.

There are numerous types of data structures, generally built upon simpler primitive data types. Well known examples are:[15]

Language support

[edit]

Most assembly languages and some low-level languages, such as BCPL (Basic Combined Programming Language), lack built-in support for data structures. On the other hand, many high-level programming languages and some higher-level assembly languages, such as MASM, have special syntax or other built-in support for certain data structures, such as records and arrays. For example, the C (a direct descendant of BCPL) and Pascal languages support structs and records, respectively, in addition to vectors (one-dimensional arrays) and multi-dimensional arrays.[17][18]

Most programming languages feature some sort of library mechanism that allows data structure implementations to be reused by different programs. Modern languages usually come with standard libraries that implement the most common data structures. Examples are the C++ Standard Template Library, the Java Collections Framework, and the Microsoft .NET Framework.

Modern languages also generally support modular programming, the separation between the interface of a library module and its implementation. Some provide opaque data types that allow clients to hide implementation details. Object-oriented programming languages, such as C++, Java, and Smalltalk, typically use classes for this purpose.

Many known data structures have concurrent versions which allow multiple computing threads to access a single concrete instance of a data structure simultaneously.[19]

See also

[edit]

References

[edit]
  1. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009). Introduction to Algorithms, Third Edition (3rd ed.). The MIT Press. p. 9. ISBN 978-0262033848. A data structure is a way to store and organize data in order to facilitate access and modifications.
  2. ^ Black, Paul E. (15 December 2004). "data structure". In Pieterse, Vreda; Black, Paul E. (eds.). Dictionary of Algorithms and Data Structures [online]. National Institute of Standards and Technology. Retrieved 2018-11-06. An organization of information, usually in memory, for better algorithm efficiency, such as queue, stack, linked list, heap, dictionary, and tree, or conceptual unity, such as the name and address of a person. It may include redundant information, such as length of the list or number of nodes in a subtree.
  3. ^ "Data structure". Encyclopaedia Britannica. 17 April 2017. Retrieved 2018-11-06. way in which data are stored for efficient search and retrieval
  4. ^ a b "1.2 Abstract Data Types". Virginia Tech - CS3 Data Structures & Algorithms. Archived from the original on 2023-02-10. Retrieved 2023-02-15.
  5. ^ Wegner, Peter; Reilly, Edwin D. (2003-08-29). Encyclopedia of Computer Science. Chichester, UK: John Wiley and Sons. pp. 507–512. ISBN 978-0470864128.
  6. ^ Gavin Powell (2006). "Chapter 8: Building Fast-Performing Database Models". Beginning Database Design. Wrox Publishing. ISBN 978-0-7645-7490-0. Archived from the original on 2007-08-18.
  7. ^ "1.5 Applications of a Hash Table". University of Regina - CS210 Lab: Hash Table. Archived from the original on 2021-04-27. Retrieved 2018-06-14.
  8. ^ Smith, Roderick W. (2000). The Multi-boot Configuration Handbook. Que Publishing. p. 303. ISBN 978-0-7897-2283-6.
  9. ^ Mehta, Dinesh P.; Sahni, Sartaj (21 February 2018). Handbook of Data Structures and Applications. Taylor & Francis. p. 799. ISBN 978-1-4987-0188-4.
  10. ^ "Rob Pike's 5 Rules of Programming". www.cs.unc.edu. Retrieved 11 May 2026.
  11. ^ "When data is too big to fit into the main memory". Indiana University Bloomington - Data Structures (C343/A594). 2014. Archived from the original on 2018-04-10.
  12. ^ Tsiknis, George K. "UNIT 3: Concrete Data Types" (PDF). CICS 216. Retrieved 11 May 2026.
  13. ^ Horowitz, Ellis; Sahni, Sartaj (1984). Fundamentals of data structures. Rockville: Computer Science Press. ISBN 9780914894209. An algorithm's behavior pattern or performance profile is measured in terms of the computing time and space that are consumed while the algorithm is processing.
  14. ^ Nievergelt, Jürg; Widmayer, Peter (2000-01-01), Sack, J. -R.; Urrutia, J. (eds.), "Chapter 17 - Spatial Data Structures: Concepts and Design Choices", Handbook of Computational Geometry, Amsterdam: North-Holland, pp. 725–764, ISBN 978-0-444-82537-7, retrieved 2023-11-12{{citation}}: CS1 maint: work parameter with ISBN (link)
  15. ^ Seymour, Lipschutz (2014). Data structures (Revised first ed.). New Delhi, India: McGraw Hill Education. ISBN 9781259029967. OCLC 927793728.
  16. ^ Walter E. Brown (September 29, 1999). "C++ Language Note: POD Types". Fermi National Accelerator Laboratory. Archived from the original on 2016-12-03. Retrieved 6 December 2016.
  17. ^ "The GNU C Manual". Free Software Foundation. Retrieved 2014-10-15.
  18. ^ Van Canneyt, Michaël (September 2017). "Free Pascal: Reference Guide". Free Pascal. Archived from the original on 2026-01-22.
  19. ^ Mark Moir and Nir Shavit. "Concurrent Data Structures" (PDF). cs.tau.ac.il. Archived from the original (PDF) on 2011-04-01.

Bibliography

[edit]

Further reading

[edit]
[edit]
✎ Sign in to edit