Verkettete Liste

T7V

Aktives Mitglied
Hi, ich studiere jetz Informatik im 2.Semester und ich weiß, dass wir bald lernen Datenstrukuren (wie verkette Listen, Bäume, etc.) zu implementieren.
Also wollte ich schonmal im voraus just-for-fun ein Programm für verkettet Listen schreiben.
Dazu habe ich erstmal zwei Klassen geschrieben: die erste ist Liste, diese hat dann ein Attribut der Klasse Knoten und eine Methode einfügen (bzw später mehr).
Das Problem ist das mir Java dann eine NullPointerException wirft(bei der Methode).
Ich verstehe nur nicht warum. Eigentlich initialisiere ich die Variablen doch in einfügen.
Ich bitte um Hilfe. ???:L

PS: Ich habe gesucht aber nichts gefunden, was mir hilft. Generische Datentypen kann ich noch nicht und mehr Klassen möchte ich auch nicht erstellen(außer dann noch Element).
Java:
  public class Liste {

  protected Knoten knoten;

  public Liste(){

  }

  public Liste einfuegen (Element x){     //am Anfang
    Liste l = new Liste();
    knoten.danach = l;
    l.knoten.wert = x;
    l.knoten.danach = null;
    return this;
  }
Java:
public class Knoten{

  protected Element wert;
  protected Liste danach;
 

ARadauer

Top Contributor
ich sehe nirgends ein new Knoten();

nur weil du ein Liste l = new Liste(); machst heißt das ja nicht, das knoten darin nicht null ist
 

Final_Striker

Top Contributor
Java:
protected Liste danach;

Außerdem hat ein Knoten einen Verweis auf den nächsten Knoten und nicht auf die Liste selbst.

Java:
Liste l = new Liste();

Beim Einfügen jedes Mal eine neue Liste zu erstellen ist sicherlich auch nicht sinnvoll. Du willst ja schließlich nur eine Liste haben.
 
Zuletzt bearbeitet:

T7V

Aktives Mitglied
Ich habe es letztes Semester so gelernt, dass die Liste eine Liste gefolgt von einer weiteren Teilliste ist.
Außerdem ist die erste List nur ein pointer auf die Liste (ohne Wert).

Hab es dann so gemacht:
Java:
protected Knoten knoten = new Knoten();
 

Final_Striker

Top Contributor
Es gibt viele verschieden Listenarten, die natürlich auch alle unterschiedlich imlementiert sind. Ich weiß nicht welche Listen ihr durchgenohmen habt, aber das was du da versucht zu machen, sieht nach einer einfach verketetten Liste aus. Und eine einfach verkettete Liste verwaltet ihre Knoten in denen die eigentlichen Werte enthalten sind.

Der Aufbau ist: 1 Liste, 0 bis "unendlich vielen" Knoten mehr nicht. :)
 

T7V

Aktives Mitglied
Hmm, dann hab ich mich wohl irgendwie vertan...???:L
PS: Vielleicht war das hier auch nur ein Beispiel für Rekursionen oder so.
 

Final_Striker

Top Contributor
Ok, deine Definition war schon so richtig. Habs das gerade bei Wikipedia gelesen:

Wiki:
Sie ist die einfachste Form der verketteten Liste, da sie neben den einzelnen Knoten nur einen „Start“-Zeiger besitzt. Dieser zeigt auf den ersten Knoten in der Liste. Der letzte Knoten in der Liste zeigt auf den Wert NULL (hier NIL für „Not In List”).

Verbale Definition: Eine Liste ist entweder leer oder sie besteht aus einem Kopf und einem Zeiger, der wiederum eine Liste ist.



Finde die erste Definition aber um einiges besser, da die zweite, wie man bei dir sehen konnte, zu Missverständnissen führt.
 

Landei

Top Contributor

T7V

Aktives Mitglied
Habe jetzt eine neue Frage hierzu:

Java:
 public Liste stelle(int n){
    if(length()==(length() -n+2)) return this;  
    else return knoten.danach.stelle(n);
  }
  
  
  public Liste insert(Element e, int n){
    if((n > length()) ||(isEmpty())) throw new IllegalArgumentException("Liste besteht aus weniger als n Elementen");
      else {
        Liste l = new Liste();
        l.knoten.wert = e;
        l.knoten.danach = stelle(n+1);
        stelle(n).knoten.danach = l;
      }
    return this;
  }
Die zweite Methode soll Element e an Stelle n einfügen. Hierzu soll stelle(n) das Element vor der Stelle wiedergeben.
Auch hier bekomme ich für eine Test-Liste eine NullpointerException. Ich habe wahrscheinlich bei einem der return oder dem this was falsch gemacht...
 
S

SlaterB

Gast
du hast ja immer noch Liste + Knoten, ist das in irgendeiner Hinsicht nützlich?
wieso kann nicht Liste selber wert + danach haben und Knoten komplett wegfallen?

> if(length()==(length() -n+2))
klingt ziemlich unerfüllbar, außer n ist genau 2, deswegen dürfte immer else drankommen, bis irgendwann null,

aber das kann man mit Logging der Aktionen oder Debugging genauestens herausfinden,
dazu solltest du niemanden fragen und ich eigentlich auch nicht antworten..
 

T7V

Aktives Mitglied
> if(length()==(length() -n+2))
klingt ziemlich unerfüllbar, außer n ist genau 2, deswegen dürfte immer else drankommen, bis irgendwann null,
Logisch nicht. :)
Das war auch der Fehler. Ich wollte es so haben, dass das zweite length die Länge der nächsten Teilliste ist.Keine Ahnung warum ich das da so geschrieben habe... Jetzt geht es.
 

T7V

Aktives Mitglied
So wie ich es mache enthält jede Liste einen Knoten, welcher nur ein Wert/ein Element enthält. Daher muss ich eine neue Liste erstellen und einfügen, wenn ich einen Wert/ein Element

So funktioniert es bisher eigentich:
Java:
public Liste stelle(int n, int j){
    if(length()==(j -n+2)) return this;
    else return knoten.danach.stelle(n,j);
  }
   public Liste insert(Element e, int n){
    if((n > length()) ||(isEmpty())) throw new IllegalArgumentException("Liste besteht aus weniger als n Elementen");
      else {
        int j = length();
        Liste l = new Liste();
        l.knoten.wert = e;
        n = n+1;
        l.knoten.danach = stelle(n+1,j);
        stelle(n,j).knoten.danach = l;
      }
    return this;
  }
 

Final_Striker

Top Contributor
Es kann ja sein das es funktioniert. Aber die Funktion entspricht trotzdem nicht einer einfach verketteten Liste. Das wirst du aber nächstes Semester dann schon sehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Verkettete Liste Java Basics - Anfänger-Themen 1
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
A Verkettete Liste Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
H Verkettete Liste Java Basics - Anfänger-Themen 7
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 18
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
V Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 3
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
G 2 Aufgabe rund um eine verkettete Liste Java Basics - Anfänger-Themen 2
O Verkettete Liste Java Basics - Anfänger-Themen 10
E Methoden auf von Methoden erstellte Objekte zugreifen (verkettete Liste) Java Basics - Anfänger-Themen 10
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
S Doppelt verkettete Liste Java Basics - Anfänger-Themen 3
G Doppelt Verkettete Liste Java Basics - Anfänger-Themen 2
A Doppelt Verkettete Liste Java Basics - Anfänger-Themen 16
E doppelt verkettete liste Java Basics - Anfänger-Themen 10
V Verkettete Liste. Java Basics - Anfänger-Themen 7
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
K Verkettete Liste - Methode entwerfen Java Basics - Anfänger-Themen 14
S Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 12
B Insertionsort verkettete Liste Java Basics - Anfänger-Themen 4
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
R verkettete liste ansEndeSchieben Java Basics - Anfänger-Themen 13
A Klassen Innere Klassen, verkettete Liste Java Basics - Anfänger-Themen 9
B Zweifach-verkettete Liste umkehren Java Basics - Anfänger-Themen 6
X verkettete Liste Java Basics - Anfänger-Themen 13
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
kae verkettete Liste Java Basics - Anfänger-Themen 5
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
B OOP Verkettete Liste Java Basics - Anfänger-Themen 7
R verkettete liste Java Basics - Anfänger-Themen 5
M Verkettete Liste Java Basics - Anfänger-Themen 4
M verkettete liste Java Basics - Anfänger-Themen 7
N doppelt verkettete liste einfügen Java Basics - Anfänger-Themen 7
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
N einfach verkettete liste Java Basics - Anfänger-Themen 3
G verkettete Liste - invertieren Java Basics - Anfänger-Themen 2
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
B verkettete Liste Java Basics - Anfänger-Themen 8
S zyklisch verkettete Liste erstellen Java Basics - Anfänger-Themen 3
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
J verkettete Liste Java Basics - Anfänger-Themen 2
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
DasDogma Verkettete Liste - Element löschen Java Basics - Anfänger-Themen 2
H Verkettete Liste Java Basics - Anfänger-Themen 5
M verkettete Liste auslesen Java Basics - Anfänger-Themen 7
K eigene verkettete Liste Java Basics - Anfänger-Themen 4
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
A Eine verkettete Liste Java Basics - Anfänger-Themen 43
G verkettete lineare Liste Java Basics - Anfänger-Themen 2
L verkettete Liste - Ausgabeproblem Java Basics - Anfänger-Themen 2
G Wie kann ich eine verkettete Liste in ein JTable einfügen? Java Basics - Anfänger-Themen 7
D doppelt verkettete Liste Java Basics - Anfänger-Themen 16
S Doppelt Verkettete Liste Java Basics - Anfänger-Themen 7
R ArrayList Objekt -> verkettete Liste Java Basics - Anfänger-Themen 4
R verkettete Liste Java Basics - Anfänger-Themen 13
R verkettete Liste in und aus Datei Java Basics - Anfänger-Themen 5
M Doppelt verkettete Liste Zeiger Vorgänger beim Einfügen Java Basics - Anfänger-Themen 2
J doppelt verkettete Liste Java Basics - Anfänger-Themen 5
L doppelt verkettete Liste Java Basics - Anfänger-Themen 6
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 12
G Dopplelt verkettete liste Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste Java Basics - Anfänger-Themen 16
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben