A means of storing a collection of data. Computer science is in part the study of methods for effectively using a computer to solve problems, or in other words, determining exactly the problem to be solved. This process entails (1) gaining an understanding of the problem; (2) translating vague descriptions, goals, and contradictory requests, and often unstated desires, into a precisely formulated conceptual solution; and (3) implementing the solution with a computer program. This solution typically consists of two parts: algorithms and data structures.
Relation to algorithms
An algorithm is a concise specification of a method for solving a problem. A data structure can be viewed as consisting of a set of algorithms for performing operations on the data it stores. Thus algorithms are part of what constitutes a data structure. In constructing a solution to a problem, a data structure must be chosen that allows the data to be operated upon easily in the manner required by the algorithm.
Data may be arranged and managed at many levels, and the variability in algorithm design generally arises in the manner in which the data for the program are stored, that is (1) how data are arranged in relation to each other, (2) which data are calculated as needed, (3) which data are kept in memory, and (4) which data are kept in files, and the arrangement of the files. An algorithm may need to put new data into an existing collection of data, remove data from a collection, or query a collection of data for a specific purpose. See also Algorithm.
Abstract data types
Each data structure can be developed around the concept of an abstract data type that defines both data organization and data handling operations. Data abstraction is a tool that allows each data structure to be developed in relative isolation from the rest of the solution. The study of data structure is organized around a collection of abstract data types that includes lists, trees, sets, graphs, and dictionaries. See also Abstract data type.
Primitive and non primitive structures
Data can be structured at the most primitive level, where they are directly operated upon by machine-level instructions. At this level, data may be character or numeric, and numeric data may consist of integers or real numbers.
Non primitive data structures can be classified as arrays, lists, and files. An array is an ordered set which contains a fixed number of objects. No deletions or insertions are performed on arrays. At best, elements may be changed. A list, by contrast, is an ordered set consisting of a variable number of elements to which insertions and deletions can be made, and on which other operations can be performed. When a list displays the relationship of adjacency between elements, it is said to be linear; otherwise it is said to be nonlinear. A file is typically a large list that is stored in the external memory of a computer. Additionally, a file may be used as a repository for list items (records) that are accessed infrequently.
Not all information that is processed by a computer necessarily resides in immediately accessible memory because some programs and their data cannot fit into the main memory of the computer. Large volumes of data or records and archival data are commonly stored in external memory as entities called files. Any storage other than main memory may be loosely defined as external storage. This includes tapes, disks, and so forth. See also Computer storage technology.
This is a system that provides an extension to main memory in a logical sense. In a virtual system, all currently active programs and data are allocated space or virtual addresses in virtual memory. The program and data may not in fact reside in main memory but in an external storage. References to virtual addresses are translated dynamically by the operating system into real addresses in main memory. See also Digital computer.