Dynamische Datenstruktur: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „'''Dynamische Datenstrukturen''' sind in der Programmierung Behälter für Objekte, die eine flexible Menge an Arbeitsspeicher reservieren und somit eine beliebige Anzahl von Objekten aufnehmen können. Im Gegensatz zu Arrays mit fester Länge bieten sie mehr Flexibilität bei der Verwaltung von Datenmengen. == Einführung == In einem Programm werden oft mehrere Objekte einer Klasse verwaltet. Diese müssen in Behältern organisiert…“ |
Keine Bearbeitungszusammenfassung |
||
| (6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 16: | Zeile 16: | ||
=== Unidirektional === | === Unidirektional === | ||
[[Datei:Unidirektionaler Knoten.png|mini]] | |||
Unidirektional (lateinisch ''uni'' für „ein“) bedeutet, dass mit Hilfe eines Zeigers nur in eine Richtung verwiesen wird. So kann zum Beispiel ein unidirektionaler Knoten nur auf seinen Nachfolger, nicht aber auf seinen Vorgänger verweisen. | Unidirektional (lateinisch ''uni'' für „ein“) bedeutet, dass mit Hilfe eines Zeigers nur in eine Richtung verwiesen wird. So kann zum Beispiel ein unidirektionaler Knoten nur auf seinen Nachfolger, nicht aber auf seinen Vorgänger verweisen. | ||
=== Bidirektional === | === Bidirektional === | ||
[[Datei:Bidirektionaler Knoten.png|mini]] | |||
Ein bidirektionaler (nach der lateinischen Vorsilbe ''bi-'' für „zwei“) Knoten kann in zwei Richtungen verweisen. So kann zum Beispiel ein bidirektionaler Knoten nicht nur auf seinen Nachfolger, sondern auch zusätzlich auf seinen Vorgänger verweisen. | Ein bidirektionaler (nach der lateinischen Vorsilbe ''bi-'' für „zwei“) Knoten kann in zwei Richtungen verweisen. So kann zum Beispiel ein bidirektionaler Knoten nicht nur auf seinen Nachfolger, sondern auch zusätzlich auf seinen Vorgänger verweisen. | ||
== Beispiel == | == Beispiel == | ||
[[Datei:BlueJ Inspektion.png|mini]] | |||
<math> | |||
meineListe \rightarrow \boxed{5}\boxed{\phantom{5}} | |||
\rightarrow \boxed{42}\boxed{\phantom{42}} | |||
\rightarrow \boxed{16}\boxed{\phantom{16}} | |||
</math> | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
public class Knoten { | public class Knoten { | ||
| Zeile 27: | Zeile 35: | ||
private Knoten naechster; // Zeiger auf den nächsten Knoten | private Knoten naechster; // Zeiger auf den nächsten Knoten | ||
// einfacher Konstruktor | // einfacher Konstruktor | ||
public Knoten() { | public Knoten() { | ||
| Zeile 74: | Zeile 81: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Collection Framework == | == Collection Framework == | ||
[[Java]] fasst die bereitgestellten Datenbehälter im Java Collection Framework zusammen. Neben den eigentlichen Containern gehören auch noch Standardmethoden wie beispielsweise das [[Sortierverfahren|Sortieren]] dazu, die auf den Containern arbeiten. Die Grundlage dieses Frameworks sind so genannte Interfaces, die das typische Verhalten der Datencontainer vorgeben. | [[Java]] fasst die bereitgestellten Datenbehälter im Java Collection Framework zusammen. Neben den eigentlichen Containern gehören auch noch Standardmethoden wie beispielsweise das [[Sortierverfahren|Sortieren]] dazu, die auf den Containern arbeiten. Die Grundlage dieses Frameworks sind so genannte Interfaces, die das typische Verhalten der Datencontainer vorgeben. | ||
| Zeile 80: | Zeile 86: | ||
Die Klasse <code>java.util.ArrayList</code> ist z.B. eine dynamische Datenstruktur, die das <code>List</code>-Interface - ein Subinterface von <code>Collection</code> - implementiert hat. In der Listenstruktur der <code>ArrayList</code> können beliebig viele Objekte hinzugefügt und dann auch wieder entfernt werden. | Die Klasse <code>java.util.ArrayList</code> ist z.B. eine dynamische Datenstruktur, die das <code>List</code>-Interface - ein Subinterface von <code>Collection</code> - implementiert hat. In der Listenstruktur der <code>ArrayList</code> können beliebig viele Objekte hinzugefügt und dann auch wieder entfernt werden. | ||
[[Kategorie: | [[Kategorie:Programmierung]] | ||
[[Kategorie:FI_I_SDM]] | [[Kategorie:FI_I_SDM]] | ||
[[Kategorie:FI_I_TP1]] | |||
[[Kategorie:AHR_I_Informatik_LK]] | |||