2017-12-02 11 views
1

Während ich Datenstrukturen studierte, kam ich auf eine Frage.Datenstrukturen - Abstrakter Datentyp (ADT) VS Konkreter Datentyp (CDT)

Ein CDT ist ein vollwertiges ADT, d.h. eine Implementierung des ADT.

daher ist die .h-Datei eigentlich ein ADT (nur Operationen und keine Diskussion darüber, wie sie ausgeführt werden).

Aber durch die CPP-Datei neben der Implementierungsdatei angezeigt.

Können wir daraus schließen, dass wir einen konkreten Datentypen Stack mit einer konkreten Datenstruktur, d. H. Ein Array oder eine verknüpfte Liste?

Ist das der Fall? korrigiere mich, wenn ich falsch liege.

Antwort

0

Arrays, Listen und Bäume sind konkrete Datentypen. Sie sind grundlegende Datenstrukturen, die typischerweise von der Computersprache bereitgestellt werden. Stacks, Queues und Heaps sind abstrakte Datentypen. Sie sind nur Ideen, d. H. "Black Boxes" mit einem definierten Verhalten. Um sie zu implementieren, müssen Sie einen geeigneten konkreten Datentyp auswählen. Insbesondere können Stapel und Warteschlangen durch Arrays oder verknüpfte Listen implementiert werden. Ein Heap kann durch ein Array oder einen Binärbaum implementiert werden

0

Um, nicht ganz, zumindest in der konventionellen Verwendung der Begriffe.

Ein abstrakter Datentyp ist ein mathematical model of a type basierend auf einer Aussage über den Zustand und Operationen zur Verfügung.

Ich denke, Sie könnten an eine abstrakte Klasse denken, die eine Klasse ist, die nicht vollständig implementiert ist und so verfeinert werden muss, um eine konkrete Klasse zu machen.

Die .h Dateien geben die Schnittstelle von einer Klasse zur Verfügung gestellt. Aber inlining und so passt es nicht sehr gut in die abstrakte/konkrete Unterscheidung: Sie können eine .h Datei haben, die eine konkrete Klasse vollständig implementiert.