Einfache verkettete Liste mit Java
Dies ist Lektion (n+1) unserer Reihe "Einfache Datenstrukturen
mit Java". Heute geht es um eine einfache verkettete Liste.
Unsere erste Klasse ListElem
repräsentiert ein Element oder einen
"Knoten" der Liste und bietet einige
Methoden zur Manipulation derselben
und zur Abfrage des Inhaltes eines
Knotens und des nächsten Knotens an:
/** * Diese Klasse repräsentiert einzelnen Knoten * der verketteten * Liste. Sie bietet primitive Methoden zum * Setzen des Datums * und des next-Pointers. * @author Helmut Mucker * @version 1.0, */ public class ListElem { /** * Das Datum, welches im Knoten gespeichert wird. */ private Integer data; /** * Ein Zeiger auf den nächsten Listen-Knoten. */ private ListElem next; /** * Ein Konstruktor ohne Parameter */ public ListElem() { next = null; } public ListElem(Integer d) { data = d; next = null; } /** * Liefert den Inhalt des Knotens. * @return data */ public Integer getData() { return data; } /** * Liefert den Zeiger auf den nächsten Knoten. * @return next */ public ListElem getNext() { return next; } /** * Setzt den Inhalt des Knotens. */ public void setData(Integer d) { data = d; } /** * Setzt den Inhalt des Zeigers auf den nächsten * Knoten. */ public void setNext(ListElem n) { next = n; } /** * Liefert den Inhalt des Knotens als String. * @return String data */ public String toString() { return data.toString(); } }Die Klasse List repräsentiert dann die eigentliche Liste. Zum Probieren hat sie eine "main" Methode: In ihr sieht man beispielhaft, wie die Liste als Datenstruktur zu verwenden ist:
import java.io.*; /** * Diese Klasse repräsentiert eine * verkettete Liste. * * @author Helmut Mucker * @version 1.0 */ public class List { /** * Ein Zeiger auf das erste Element der Liste */ private ListElem first; /** * Der default Konstruktor */ public List() { first = null; } /** * Dieser Konstruktor nimmt eine Zahl * als Parameter und erzeugt eine Liste. */ public List(Integer d) { first = new ListElem(d); } /** * Dieser Konstruktor nimmt ein ListElem * als Parameter und erzeugt eine Liste. */ public List(ListElem e) { first = e; } /** * Anhängen eines Elementes an die Liste * @return Die aktuelle Liste */ public List append(Integer d) { if (first == null) { first = new ListElem(d); } else { ListElem n = new ListElem(d); n.setNext(first); first = n; } return this; } /** * Liefert die gesamte Liste konkateniert als String. * @return Die aktuelle Liste */ public String toString() { String result = ""; ListElem n = first; while (n != null) { result = result + " " + n.getData(); n = n.getNext(); } return result; } /** * Zeigt an, on die Liste leer ist * @return true wenn leer, sonst false */ public boolean isEmpty() { if (first == null) { return true; } else { return false; } } /** * Liefert eine Liste, bestehend aus dem ersten * Element. * @return Liste oder null wenn leer. */ public List getFirst() { if (first != null) { List l = new List(first); return l; } else { return null; } } /** * Liefert eine Liste, bestehend aus allen * Elementen * ausser dem ersten Element. * @return Liste oder null wenn leer. */ public List getRest() { if (first != null) { List l = new List(first.getNext()); return l; } else { return null; } } /** * Liefert eine Liste, bestehend aus dem * letzten Element * der aktuellen Liste * @return Liste oder null wenn leer. */ public List getLast() { List loop = new List(first); List current = new List(first); if (loop != null) { // not empty while (loop.getRest() != null) { // next is defined current = loop; loop = loop.getRest(); } } return current; } public List concat(List l) { ListElem glue = new ListElem(); List last = this.getLast(); if (last == null) { first = l; } else { } } public static void main(String argv[]) { List l = new List(new Integer(2)); l.append(new Integer(3)); l.append(new Integer(6)); System.out.println(l.toString()); List r = l.getLast(); System.out.println(r.toString()); } }
Alle Touren
Schneebergwege
- Bergrettungssteig
- Emmysteig
- Fadensteig
- Ferdinand Mayr-Weg
- Fischersteig
- Franz-Josef-Promenade
- Hotelries
- Hochgang
- Krummbachgraben
- Kuhschneeberg
- Kuhsteig
- Lärchkogelgrat
- Nandlgraben
- Nandlgrat
- Nandlgrat (Alter Nandlsteig)
- Niederlauf
- Novembergrat
- Nördlicher Grafensteig
- Oberer Herminensteig
- Oktobergrat
- Stadelwandgraben
- Südlicher Grafensteig
- Unterer Herminensteig
- Waxriegel
- Weichtalklamm
Raxsteige
- Alpenvereinssteig
- Altenbergsteig
- Bärenlochsteig
- Brandschneide
- Camillo Kronich-Steig
- Gaisloch
- Gamsecksteig
- Gretchensteig
- Göbl Kühn-Steig
- Großes Fuchsloch
- Großes Wolfstal
- Großer Kesselgraben
- Ho Chi Minh Pfad
- Hoyossteig
- Karl Kantner-Steig
- Kaisersteig
- Kontruszsteig
- Kronich Eisenweg
- Martinsteig
- Peter Jokel-Steig
- Preinerwandsteig
- Raxenmäuersteig
- Reisstalersteig
- Rudolfsteig
- Schlangenweg
- Staudengraben
- Wildfährte
- Teufelsbadstubensteig
- Törlweg
- Waxriegelsteig
- Wachthüttelkamm
Geführte Touren
- Gösing Hoyos-Steig
- Schneeberg Oktobergrat
- Gösing Hoyos-Steig
- Gösing und Flatzer Wand
- Gösing Hoyos-Steig
- Kienberg und Himberg
- Flatzer Wand und Gösing
- Gösing Hoyos-Steig
- Gahns Saurüssel
- Rax mit Schneeschuhen
- Himberg und Kienberg
- Flatzer Wand und Gösing
- Gösing Hoyossteig
- Prettschachersteig und Krummbachstein
- Schneeberg Oktobergrat
- Gösing Hoyossteig
- Semmering Bahnwanderweg
- Miesenbach Biedermeierrunde
- Gösing Hoyossteig
- Rax mit Schneeschuhen
- Flatzer Wand und Gösing
- Gösing Hoyossteig
- Schneeberg Novembergrat
- Schneeberg Grafensteig und Hengst
- Schneeberg Nandlgrat
- Gösing Hoyossteig
- Gahns Saurüssel
- Biedermeierrunde Miesenbach
- Gösing Hoyossteig
- Gösing Hoyossteig
- Rax mit Schneeschuhen
- Gahns Saurüssel
- Rax mit Schneeschuhen
- Gösing Hoyossteig
- Schneeberg Novembergrat
- Krummbachstein
- Schneeberg Oktobergrat
- Schneeberg Alter Nandlsteig
- Schneeberg Herminensteig
- Gösing und Flatzer Wand
- Rax mit Schneeschuhen
- Gösing Hoyossteig
- Schneeberg_Novembergrat
- Schneeberg Alter Nandlsteig
- Schneeberg Herminensteig
- Schneeberg Brandmauer und Stadelwand
- Schneeberg und Hengst
- Gösing Hoyos-Steig
- Rax mit Schneeschuhen
- Schneeberg Herminensteig und Hengst
- Schneeberg Novembergrat
- Schneeberg Herminensteig
- Schneeberg Herminensteig
- Schneeberg Alter Nandlsteig
- Miesenbach Biedermeierrunde
- Flatzer Wand und Gösing
- Dürre Leiten mit Schneeschuhen
- Rax mit Schneeschuhen
- Dürre Leiten mit Schneeschuhen
- Schneeberg Brandmauer
- Schneeberg Novembergrat
- Miesenbach Biedermeierrrunde
- Gahns Eng und Saurüssel mit Schneeschuhen
- Kuhschneeberg mit Schneeschuhen
- Novembergrat
- Nördlicher Grafensteig und Hengst
- Miesenbach Biedermeierrunde
- Flatzer Wand und Gösing
- Großes Wolfstal
- Alter Nandlsteig
- Herminensteigvariationen
- Gahns Saurüssel mit Schneeschuhen
- Dürre Leiten mit Schneeschuhen
- Kuhschneeberg mit Schneeschuhen
- Flatzer Wand und Gösing
- Großes Wolfstal
- Alter Nandlsteig
- Biedermeierrunde in Miesenbach
- Gahns Saurüssel und Eng