Unterschiede zwischen Static & Dynamic data Strukturen
Was sind die wichtigsten Unterschiede, vor-und Nachteile zwischen statischen und dynamischen Daten-Strukturen?
Unter die Kategorien der gängigsten Datenstrukturen fallen?
Wie konnte ich wissen, in welcher situation verwenden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um eine starke Vereinfachung:
Gibt es nur ein paar grundlegende Arten von Datenstrukturen: arrays, Listen und Bäume. Alles andere kann zusammengesetzt werden, indem verschiedene Arten von diesen zwei Strukturen (z.B. eine hash-Tabelle implementiert werden kann, mit einem array für die hash-Werten und einer Liste für jeden hash-Wert zum behandeln von Kollisionen).
Dieser Strukturen, arrays sind statisch (d.h., deren Speicherbedarf variiert nicht im Laufe der Zeit als Operationen durchgeführt werden, die auf Ihnen) und alles andere ist dynamisch (d.h., im Allgemeinen Fall der Speicherbedarf ändert).
Die Unterschiede zwischen den beiden Arten von Strukturen abgeleitet werden kann aus der obigen:
Es gibt auch andere Unterschiede, die aber nur ins Spiel kommen, wenn Ihre Daten können sortiert werden. Ich kann nicht geben eine umfangreiche Liste, da sind viele dynamische Datenstrukturen, welche weisen unterschiedliche Leistungsmerkmale für verschiedene Vorgänge ("add", "entfernen", "finden"), und so müssen Sie nicht alle unter dem gleichen Dach.
Sehr sichtbare Unterschied ist, dass die sortierten arrays erfordert das bewegen (möglicherweise viele) Sachen im Speicher für jeden anderen Vorgang als "finden", während dynamische Strukturen sind im Allgemeinen weniger Arbeit.
So, zur Erinnerung:
Edit: ich nicht zu erwähnen, Graphen, eine andere Art von dynamischen Datenstruktur, die wohl nicht zusammengesetzt sein aus einfacheren teilen (per definition, ein Baum hat genau einen link "in" jeder Knoten mit Ausnahme der Wurzel, während die Diagramme können mehr als eine). Die Graphen jedoch nicht wirklich verglichen werden mit anderen Strukturen in einem "was wäre besser" - Szenario, da müssen Sie entweder verwenden Sie ein Diagramm oder Sie nicht (anderen Strukturen aufweisen können, unterschiedliche Leistung, aber am Ende werden Sie alle unterstützen die gleiche Anzahl von Operationen).
Statische Datenstrukturen(SDS) sind Feste Größe (z.B. Arrays), die Speichermenge, die einmal zugewiesen, um Sie nicht ändern können zur Laufzeit in der Erwägung, dass Dynamische Datenstrukturen(DDS), (z.B. in Linklisten) haben eine flexible Größe , Sie können wachsen oder schrumpfen, wie erforderlich, enthalten die Daten gespeichert werden.
SDS sind lineare Datenstrukturen, die es erlauben den schnellen Zugriff auf Elemente, die in Ihnen gespeichert aber das einfügen/löschen von Operationen sind teuer im Vergleich zu DDS, wo der Zugriff auf die Elemente ist langsamer, aber einfügen/löschen ist schneller.
Meisten DS sind Dynamisch DS.
Im Fall von SDS Speicherplatz reserviert, bevor die eigentlichen Daten einfügen, so dass Raum gehen kann, verschwendet oder unzureichend sein einige Zeiten, so dass Sie sollte nur verwendet werden, falls der genaue Umfang der Daten an, die eingefügt werden im Voraus bekannt ist, wenn das bekannt werden, die zur Laufzeit DDS verwendet werden soll.
Ist es immer Umgekehrt, wenn Sie statisch sind, dann verlieren Sie den Speicher in der Erwägung, dass im Fall von dynamischen, wird Leistung reduziert werden. Eine beste design möchten, verwenden Sie die Datenstrukturen effizient, gibt es keine perfekte Antwort.
Einfache Tipps
Dynamische Datenstrukturen mit folgenden Eigenschaften:
Statische Datenstrukturen haben die folgenden Eigenschaften:
Zusammenfassend ist zu sagen, es ist nicht wirksam, verwenden Sie dynamische Strukturen, die zum speichern einer Reihe von Daten, die bekannt ist, nicht zu ändern. Statische Datenstruktur, die in einem solchen Fall wird, Systemressourcen zu sparen und auch einen schnelleren Zugriff auf die Elemente. Wenn die Größe der Daten zu ändern, auf der anderen Seite, dann verwenden Sie dynamische Strukturen.