A data structure in computer science is a way of storing data

in a computer so that it can be used efficiently. It is an organization

of mathematical and logical concepts of data. Often a carefully chosen

data structure will allow the most

efficient algorithm
to be used. The choice of the data structure often begins from the

choice of an abstract data type. A well-designed data structure allows

a variety of critical operations to be performed, using as few

resources, both execution time and memory space, as possible. Data

structures are implemented by a

programming language as data types and the

references and operations they provide.

Different kinds of data structures are suited to different kinds of

applications, and some are highly specialized to certain tasks. For

example,

B-trees are particularly well-suited for implementation of databases, while networks of machines rely on routing tables to function.

In the design of many types of computer program, the choice of data

structures is a primary design consideration. Experience in building

large systems has shown that the difficulty of implementation and the

quality and performance of the final result depends heavily on choosing

the best data structure. After the data structures are chosen, the

algorithms to be used often become relatively obvious. Sometimes things

work in the opposite direction — data structures are chosen because

certain key tasks have algorithms that work best with particular data

structures. In either case, the choice of appropriate data structures

is crucial.

This insight has given rise to many formalized design methods and

programming languages in which data structures, rather than algorithms,

are the key organizing factor. Most languages feature some sort of

module system, allowing data structures to be safely reused in

different applications by hiding their verified implementation details

behind controlled interfaces.

Object-oriented programming languages such as C++ and

Java in particular use

classes for this purpose.

Since data structures are so crucial, many of them are included in standard libraries of modern programming languages and

APIs, such as C++'s

containers, the

Java Collections Framework, and the Microsoft

.NET Framework.

The fundamental building blocks of most data structures are arrays,

records,

discriminated unions, and

references.

For example, the nullable reference, a reference which can be null, is

a combination of references and discriminated unions, and the simplest

linked data structure, the linked list, is built from records and

nullable references.

Data structures represent implementations or

interfaces:

A data structure can be viewed as an interface between two functions or

as an implementation of methods to access storage that is organized

according to the associated data type