Ich habe ähnliche Anfragen gesehen und viele der Antworten gelesen. Man könnte meinen, ich wüsste es inzwischen, aber einige der Antworten waren widersprüchlich, und ich bin viel verwirrter als zu Beginn.
Meine Reise begann mit der Frage: "Was ist der Unterschied zwischen einem Heap und einer Priority Queue?" Wo ich entdeckte, dass ein Heap eine Datenstruktur und eine Priority Queue ein abstrakter Datentyp war. Aber warum ist das so?
Bisher glaube ich, dass dies die beste Antwort ist: Einfach ausgedrückt ist die Beziehung zwischen einer Datenstruktur und einem abstrakten Datentyp analog zu der Beziehung zwischen einem Algorithmus und einem Pseudocode.
Das erste ist ein Konzept, während das zweite eine formale Beschreibung ist (abstrakt, unzugänglich).
Einige argumentieren, dass ADT ein sprachspezifisches Wort ist. Weil es "Datentypen beschreibt, die nicht in der Standardbibliothek gefunden werden". Ein Haufen ist also nicht in der Standardbibliothek in Java oder JS, aber ich dachte, Haufen wären eine Datenstruktur, kein abstrakter Datentyp?
Kann jemand erklären, was eine Datenstruktur und ein abstrakter Datentyp im Allgemeinen sind?