Est Lié Liste d'ADT ou est-il une Structure de Données, ou les deux?

Si j'utilise la définition standard d'un Type Abstrait de Données comme une boîte noire qui fournit des fonctions pour gérer une collection de données, une Liste Liée correspond à cette description:

Un conteneur qui offre des fonctions add(x) et get(i) (entre autres) qui peuvent être utilisés pour maintenir une liste d'objets.

Mais quand vous posez la question, qu'est-ce que le temps de la complexité de ces opérations, alors vous vous rendez compte qu'il dépend de la façon dont ce conteneur est mis en œuvre:

Si vous venez en interne conserver un lien vers le nœud de tête, ces deux opérations s'exécuter en O(n) fois. Si vous avez en outre de maintenir un lien à la queue nœud, vous obtiendrez O(1) fois sur deux.

Donc ma question est, à des fins d'apprentissage, considérez-vous une Liste Liée à un ADT ou une Structure de Données?

Cette question est venu à propos, quand j'ai essayé de mettre en œuvre une Pile ADT de Skiena l'Algorithme du Manuel de Conception, et a été la lecture sur la façon dont le rendement de il est mis(x) et get() méthodes dépendra de la Structure de Données est choisi de la mettre en œuvre. Le livre dit, dans ce cas, il n'a pas tellement d'importance si vous choisissez un tableau ou d'une liste liée structure de données pour mettre en œuvre cette ADT, ils offrent des performances similaires.

Mais le font-ils? N'est-ce pas dépendre de la façon dont cette liste de liens est mis en œuvre? Il existe de nombreuses façons de mettre en œuvre la liste liée elle-même, n'est pas que le fait de faire juste une autre ADT lui-même?

OriginalL'auteur dvanaria | 2011-06-30