web-dev-qa-db-fra.com

Expliquez la différence entre une structure * de données * et un type * de données *

En essayant de répondre Quelle est la différence entre un type de données composite et une structure de données? J'ai réalisé que même si j'ai une idée claire de ce qu'est un type de données , et comment ce n'est pas la même chose qu'une structure de données , je ne peux pas mettre la différence en mots. Si vous enseigniez un cours d'introduction au CS, comment expliqueriez-vous la différence?

33
zwol

Une donnée structure est une description abstraite d'une manière d'organiser les données pour permettre à certaines opérations sur elles d'être exécutées efficacement. Par exemple, un arbre binaire est une structure de données, tout comme un tas de Fibonacci, un arbre AVL ou un skiplist. Les théoriciens décrivent les structures de données et prouvent leurs propriétés afin de montrer que certains algorithmes ou problèmes peuvent être résolus efficacement sous certaines hypothèses.

Une donnée type est une classe (potentiellement infinie) d'objets concrets qui partagent tous une propriété. Par exemple, "entier" est un type de données contenant tous les nombres infiniment nombreux, "chaîne" est un type de données contenant toutes les chaînes infiniment nombreuses et "entier 32 bits" est un type de données contenant tous les nombres entiers exprimables en trente -deux bits. Il n'y a aucune exigence qu'un type de données soit une primitive dans un langage - par exemple, en C++, le type int est une primitive, comme celle-ci:

struct MyStruct {
    int x, y;
};

Dans ce cas, MyStruct est un type de données représentant tous les objets possibles étiquetés MyStruct qui contiennent deux ints étiquetés x et y .

Il est possible d'avoir un type de données représentant toutes les instances possibles d'une structure de données. Par exemple, vous pouvez coder une arborescence de recherche binaire avec ce type de données:

struct BST {
    int data;
    BST* left, *right;
};

En bref, une donnée structure est un objet mathématique avec un ensemble de propriétés qui peuvent être réalisées de différentes manières sous forme de données types. Une donnée type = est juste une classe de valeurs qui peut être concrètement construite et représentée.

37
templatetypedef

Le type de données ne peut plus être réduit, tandis qu'une structure de données peut, car elle se compose de plusieurs champs de données différentes.

Cependant, très probablement, j'utiliserais une analogie - un type de données est un atome, tandis que les structures de données sont des molécules. (oui, je sais, les atomes peuvent être divisés, etc., mais l'analogie devrait tenir le coup).

11
Femaref

le type de données est n'importe quel type, y compris les types de base comme int, mais s'étendant également aux structures. les structures sont toujours constituées de types de base et/ou d'autres structures.

Donc int est un type de données mais pas une structure. Alors que struct point {int x; int y; } est à la fois une structure et un type de données.

3
jun