Data structure

Edit · View history

A data structure is a specialized format for organizing, processing, retrieving, and storing data. Data structures define the way data is arranged in a computer's memory (or storage) and the operations that can be performed on that data. They are fundamental building blocks of efficient algorithms and software design, enabling programs to manage large volumes of information in a logical and performant manner.

Common data structures include arrays, linked lists, stacks, queues, trees, graphs, hash tables, and heaps. The choice of a particular data structure depends on the nature of the data and the required operations – for instance, a hash table is suited for fast lookups, while a binary search tree maintains ordered data for efficient search, insertion, and deletion. Data structures are often combined with algorithms to solve complex computational problems, and their study is a core topic in computer science curricula.

Features

History

The concept of data structures emerged alongside the development of computer programming. Early programmers used simple arrays and records in languages like FORTRAN (1950s) and COBOL (1960s). The term "data structure" gained prominence with the publication of The Art of Computer Programming by Donald Knuth (1968), which systematically analyzed algorithms and their underlying structures. In the 1970s, the development of high-level languages such as Pascal and C introduced direct support for user-defined data structures through records (structs) and pointers. The academic field of data structures was formalized in textbooks like Algorithms + Data Structures = Programs by Niklaus Wirth (1976). The late 20th century saw the rise of object-oriented programming, which encapsulated data structures with methods, and the emergence of generic programming (e.g., C++ STL, Java Collections Framework) that provided reusable, type-safe implementations. Today, data structures are integrated into virtually every programming language, and their study remains essential for designing efficient software.