Datenstruktur: Unterschied zwischen den Versionen

Aus KGS-Wiki
(Tuprl in Python)
(→‎Tupel: tupel, Menge, Stack, Queue)
Zeile 25: Zeile 25:


Als '''Tupel''' werden verschiedene Datenstrukturen bezeichnet. In [[Python (Programmiersprache)|Python]] werden als Tupel unveränderter Listen von fester Länge bezeichnet. Diese Tupel können gut genutzt werden, um eine Funktion mehrere Daten auf einmal zurückgeben zu lassen, da die Elemente eines Tupels direkt als Variablen gespeichert werden können.
Als '''Tupel''' werden verschiedene Datenstrukturen bezeichnet. In [[Python (Programmiersprache)|Python]] werden als Tupel unveränderter Listen von fester Länge bezeichnet. Diese Tupel können gut genutzt werden, um eine Funktion mehrere Daten auf einmal zurückgeben zu lassen, da die Elemente eines Tupels direkt als Variablen gespeichert werden können.
Tupel im mathematischen Sinne sind die Einträge in relationalen Datenbanken wie [[SQL]]


== Menge ==
== Menge ==
Siehe auch [[Menge]]
Siehe auch [[Menge]]
Der Mathematiker Georg Cantor definierte 1895 eine Menge wie folgt: <blockquote>„Unter einer ‚Menge‘ verstehen wir jede Zusammenfassung <math>M</math> von bestimmten wohlunterschiedenen Objekten m unserer Anschauung oder unseres Denkens (welche die ‚Elemente‘ von M genannt werden) zu einem Ganzen.“<ref>Georg Cantor: Beiträge zur Begründung der transfiniten Mengenlehre. In: Mathematische Annalen. Band 46, S. 481.</ref></blockquote>''Wohlunterschieden'' meint hier, dass jedes Element einer Menge einzigartig ist,  d.h. eine Menge kann nicht zweimal dasselbe Element enthalten.
In Python werden Mengen mit geschweiften Klammern notiert, in Java müssen dafür Klassen wie <code>HashSet</code> oder <code>TreeSet</code> benutzt werden.


== Stack ==
== Stack ==
Siehe auch [[Stack]]
Siehe auch [[Stack]]


Auch bekannt als ''Stapel'' oder ''Kellerspeicher''
Auch bekannt als ''Stapel'' oder ''Kellerspeicher''. Ein Kellerspeicher funktioniert wie ein vollgerümpelter Keller: man kann nur auf das zuoberst liegende Objekt zugreifen und weitere Objekte werden oben auf dem <span lang="En" dir="ltr">Stack</span> abgelegt. Dieses Prinzip heißt ''Last-in-first-out'' (LIFO).
 
Stacks bilden die Grundlage des Arbeitsspeichers bei der [[Assemblersprache|Assembler]]-Programmierung und sind außerdem die einzige Datenstruktur in der Programmiersprache [[Shakespeare Programming Language|Shakespeare]].


== Queue ==
== Queue ==
Siehe auch [[Warteschlange]]
Siehe auch [[Warteschlange]]
In Warteschlangen gilt, egal ob in der Programmierung oder an der Kasse: Wer zuerst kommt, ist auch zuerst dran. Dieses Prinzip heißt ''First-in-first-out'' (FIFO). Warteschlangen können zum Beispiel bei der [[Breitensuche]] verwendet werden, um die Reihenfolge zu speichern, in der die Knoten eines Graphen betrachtet werden sollen.


== Schlüssel-Wert-Paare ==
== Schlüssel-Wert-Paare ==

Version vom 29. April 2024, 14:49 Uhr

Sobald Daten eine komplexere Form annehmen als eine einzelne Variable verarbeiten kann, müssen sie in speziellen Datenstrukturen organisiert werden.

Diese Datenstrukturen unterscheiden sich im Hinblick auf die Zugriffsmöglichkeiten, die sie auf die Daten bieten, sowie auf die Zeit, die dafür nötig ist.

🕳
Lückenhaft

In diesem Artikel oder Abschnitt fehlen noch folgende wichtige Informationen:

Alle Datenstrukturen müssen noch detaillierter beschrieben werden.

Hilf dem KGS-Wiki, indem du sie recherchierst und einfügst.

Array

Siehe auch Array

Ein Array, in der deutschsprachigen Literatur auch Feld genannt, ist eine der einfachsten Datenstrukturen. Ursprünglich ist ein Array eine Reihe von hintereinander liegenden Speicherzellen. Bei der Erstellung des Arrays wird ein Block an Speicherzellen mit einer festen Größe reserviert. Deswegen muss man z.B. in C oder Java immer noch bei der Initialisierung eines Arrays dessen Größe angeben und kann diese nachträglich nicht mehr verändern.

Auf die Werte eines Arrays wird mit einem Index zugegriffen, der typischerweise bei 0 beginnt.

Verkettete Liste

Siehe auch Verkettete Liste

Eine verkettete Liste (engl. linked list) ist eine Datenstruktur, die beliebig viele Elemente in linearer Form speichern kann, d.h. zu jedem Element außer dem letzten existiert genau ein Nachfolger und zu jedem Element außer dem ersten existiert genau ein Vorgänger.

Praktisch an verketteten Listen ist, dass man mit relativ geringem Aufwand mittendrin Elemente löschen oder einfügen kann, ohne dass Lücken entstehen oder potenziell größere Datenmengen verschoben werden müssen. Auch für die Implementierung von Stacks oder Queues sind sie geeeignet.

Nachteilig ist, dass Operationen wie Suchen eine Laufzeit in aufweisen.

Tupel

Siehe auch Tupel

Als Tupel werden verschiedene Datenstrukturen bezeichnet. In Python werden als Tupel unveränderter Listen von fester Länge bezeichnet. Diese Tupel können gut genutzt werden, um eine Funktion mehrere Daten auf einmal zurückgeben zu lassen, da die Elemente eines Tupels direkt als Variablen gespeichert werden können.

Tupel im mathematischen Sinne sind die Einträge in relationalen Datenbanken wie SQL

Menge

Siehe auch Menge

Der Mathematiker Georg Cantor definierte 1895 eine Menge wie folgt:

„Unter einer ‚Menge‘ verstehen wir jede Zusammenfassung von bestimmten wohlunterschiedenen Objekten m unserer Anschauung oder unseres Denkens (welche die ‚Elemente‘ von M genannt werden) zu einem Ganzen.“[1]

Wohlunterschieden meint hier, dass jedes Element einer Menge einzigartig ist, d.h. eine Menge kann nicht zweimal dasselbe Element enthalten.

In Python werden Mengen mit geschweiften Klammern notiert, in Java müssen dafür Klassen wie HashSet oder TreeSet benutzt werden.

Stack

Siehe auch Stack

Auch bekannt als Stapel oder Kellerspeicher. Ein Kellerspeicher funktioniert wie ein vollgerümpelter Keller: man kann nur auf das zuoberst liegende Objekt zugreifen und weitere Objekte werden oben auf dem Stack abgelegt. Dieses Prinzip heißt Last-in-first-out (LIFO).

Stacks bilden die Grundlage des Arbeitsspeichers bei der Assembler-Programmierung und sind außerdem die einzige Datenstruktur in der Programmiersprache Shakespeare.

Queue

Siehe auch Warteschlange

In Warteschlangen gilt, egal ob in der Programmierung oder an der Kasse: Wer zuerst kommt, ist auch zuerst dran. Dieses Prinzip heißt First-in-first-out (FIFO). Warteschlangen können zum Beispiel bei der Breitensuche verwendet werden, um die Reihenfolge zu speichern, in der die Knoten eines Graphen betrachtet werden sollen.

Schlüssel-Wert-Paare

Siehe auch Schlüssel-Wert-Datenstruktur

Auch bekannt als Assoziatives Array, Wörterbuch, Dictionary, Map (in Java) oder Hash (in Perl)

Baum

Siehe auch Baum

Heap

Siehe auch Heap

Graph

Siehe auch Graph

  1. Georg Cantor: Beiträge zur Begründung der transfiniten Mengenlehre. In: Mathematische Annalen. Band 46, S. 481.