Einfach verkettete Liste Element an bestimmter Position einfügen

S

Shantox

Mitglied
Hallo,
Java:
public class VerketteteListe<T> implements List<T> {
     protected T element;   //Referenz auf aktuelles Listenelement
     protected VerketteteListe<T> rest;   //Rest der Liste, oder null falls das aktuelle Element das letzte ist.
     public VerketteteListe(T element) {
          if (element == null) throw new NullPointerException();
          this.element = element;
     }
      public VerketteteListe(T... elemente) {
          if (elemente == null) throw new NullPointerException();
          if (elemente.length == 0) throw new IllegalArgumentException();
          for (T t : elemente) {
               if (element == null) {
                 element = t;
               }
               else {
                   add(t);
                }
             }
          }
     @Override
     public boolean add(T e) {
        if (e == null) throw new NullPointerException();
        if (rest == null) {
            rest = new VerketteteListe<T>(e);
            return true;
         }
        else {
            return rest.add(e);
           }
       }
    @Override
     public void add(int index, T e) {
         if (index == 0) {
              throw new UnsupportedOperationException(
                "Kann nicht als erstes Element einfuegen.");
              }
       // TODO
       }
@Override
     public void clear() {
        if (rest != null) {
        rest.clear();
        }
       rest = null;
       element = null;
      }
@Override
     public T get(int index) {
         if (index < 0) throw new IndexOutOfBoundsException();
        if (index == 0) return element;
        if (rest == null) throw new IndexOutOfBoundsException();
        return rest.get(index-1);
    }
@Override
    public int size() {
        if (rest == null) return 1;
        else return rest.size() + 1;
    }

Das hier habe ich alles gegeben und noch weitere Methoden, die jedoch irrelevant sind. Meine Aufgabe ist es, an der mit TODO markierten Stelle, die Methode zu vervollständigen. Ich muss ein neues Element e an Position index einfügen. Ich darf nur Änderungen an der Methode vornehmen und keine weiteren Variablen usw. einführen. Ich muss zugeben, ich bin kein großer Fan von verketteten Listen. Wie das mit Arrays klappen würde würde ich verstehen.
Kann mir jemand ein bisschen helfen? Ich stehe grad auf dem Schlauch. Ich hab das Gefühl das ich irgendwas mit der Methode get machen muss oder?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Hast du denn eine Idee, wie die Methode für index=1 aussehen müsste?
 
S

Shantox

Mitglied
Nicht wirklich. Ich bin es gewohnt, bei Listen eine Referenz auf das nächste Element zu haben, die mir hier aber fehlt..
 
X

Xyz1

Gast
In add steht doch schon, was zu tun ist. Sollt ihr das rekursiv oder iterativ machen?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Ja und nein, wenn du nur das machst, überschreibst du den Eintrag, der dort stand, allerdings soll ja ein zusätzlicher Eintrag dort eingefügt werden
 
S

Shantox

Mitglied
rest.element = e wäre ja der neue Eintrag auf Position 1. Den alten Eintrag müsste ich dann auf Position 2 verschieben. Wie realisiert man das bei Listen? Ich kann ja nicht inkrementieren.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Mal es dir am besten mal auf Papier auf, bei verketteten Listen hilft das meist
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
rest und element sind unterschiedliche Datentypen, das klappt also nicht ;)
Es fehlt immer noch, das ein zusätzliches Element eingefügt wird, es muss ja ein zusätzliches Listen-Element geben, in diesem Fall VerketteteListe
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Das geht auch in die richtige Richtung, da ist aber noch ein bisschen was falsch...

Warum übergibst du element dem Konstruktor? Element ist doch der Wert an der aktuellen Position, und hat mit der nächsten nichts zu tun?
 
Zuletzt bearbeitet:
S

Shantox

Mitglied
Ich habe mir gedacht, dass wenn ich element im Konstruktur übergebe, dass element dann an zweiter Position stehen wird. Aber da du das so sagst, muss ich anstatt element dem Konstruktur wahrscheinlich e übergeben richtig? Aber dann ist wiederum rest.element = e; falsch.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
rest.element = e ist dann auch überflüssig, stattdessen musst du den alten rest der Liste mit dem neuen Element verbinden
 
JStein52

JStein52

Top Contributor
Generelles Vorgehen (Annahme: das bisherige Element an der Position "index" soll durch ein neues ersetzt werden und die bisherigen rutschen um eins weiter):

  • du musst zunächst einmal zu der Position navigieren (index) an der du ein Element einfügen willst. Das kannst du zum Beispiel rekursiv machen indem du die Methode für den Nachfolger des aktuellen Elementes wieder mit dem um 1 dekrementierten Index aufrufst. Wenn der Index == 1 ist weisst du: das nächste Listenelement ist das welches ersetzt werden soll.
  • Ersetzen: ein neues Listenelement erzeugen, in dieses für rest das aktuelle rest eintragen und für element den übergebenen Wert. im aktuellen rest trägst du dann das neue Listenelement ein. Ein Spezialfall ist noch wenn beim durchnavigieren index == 1 wird und rest == null. Dann ist das das Ende der Liste und du hängst einach an. Dafür hast du ja schon eine Methode.
Jetzt versuch mal das in Code umzusetzen.
 
JavaXava

JavaXava

Mitglied
mal ne andere Frage, was ich nicht verstehe:
warum muss er nicht mit "throws" im Methodenkopf angeben, dass seine Methoden Exceptions schmeißen?
Danke, LG
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Die Exceptions erben von RuntimeException, damit sind die Unchecked und müssen nicht angegeben werden ;)
 
JavaXava

JavaXava

Mitglied
okay, und diese müssen dann nicht weitergegeben werden, also braucht er kein throws.
sind die exceptions checked und werden weitergereicht, dann throws im Methodenschädel?
danke
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Weitergereicht werden alle, der Unterscheid zwischen Checked und Unchecked ist, das erstere explizit behandelt werden müssen, also entweder mit throws oder mit catch
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
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
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4
E einfach verkettete liste, nullPointerException Java Basics - Anfänger-Themen 5
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
S Einfach verkette Liste Java Basics - Anfänger-Themen 27
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
V Codezeile wird einfach nicht ausgeführt Java Basics - Anfänger-Themen 23
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
J Einfach verkettet List: Ausgabe ohne null Java Basics - Anfänger-Themen 11
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
M Array in ein Array übertragen (möglichst einfach) Java Basics - Anfänger-Themen 6
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
R Methoden... ich vesteh sie einfach nicht Java Basics - Anfänger-Themen 15
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
C Erste Schritte Problem mit der Division von Koeffizienten... oder einfach nur irgendwlechen zahlen Java Basics - Anfänger-Themen 10
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
B Variable wird einfach so wieder auf "null" gesetzt Java Basics - Anfänger-Themen 12
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
S ich begreife es einfach nicht -> zweck der Schnittstellen Java Basics - Anfänger-Themen 27
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
W Java-Programm als Icon mit Doppelklick einfach öffnen ? Java Basics - Anfänger-Themen 3
M Layout einfach bilden Java Basics - Anfänger-Themen 4
I Weiß einfach nicht mehr weiter... Java Basics - Anfänger-Themen 3
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
A If-Schleife spinnt - ganz einfach Code - Riesen Problem :) Java Basics - Anfänger-Themen 9
Luk10 einfach animation Java Basics - Anfänger-Themen 2
E JMC - Dlls einbinden - möglichst einfach Java Basics - Anfänger-Themen 8
I einfach verkette Liste Java Basics - Anfänger-Themen 9
H Typumwandlung String --> Int (ganz einfach) Java Basics - Anfänger-Themen 9
O Observer - Einfach erklärt? Java Basics - Anfänger-Themen 5
K Ich verstehe switch einfach nicht Java Basics - Anfänger-Themen 4
M jar-Datei einfach umbenennen? Java Basics - Anfänger-Themen 8
S Filewriter schreibt einfach nicht Java Basics - Anfänger-Themen 6
G Opjektorientierte Programmierung (OOP). einfach für euch Java Basics - Anfänger-Themen 4
X WAV conversion ist einfach nicht möglich Java Basics - Anfänger-Themen 2
J jar erstellen. Es klappt einfach nicht Java Basics - Anfänger-Themen 14
L Eingeben Rechnen Ausgeben - Leider nicht so einfach Java Basics - Anfänger-Themen 31
P einfach frage zur vererbung Java Basics - Anfänger-Themen 9
G Frank A. - ports einfach öffnen und schließen Java Basics - Anfänger-Themen 3
M Caeser Verschlüsselung ganz einfach(nicht für mich) Java Basics - Anfänger-Themen 6
L while wird einfach übersprungen? Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25
B Thread will einfach nicht stoppen Java Basics - Anfänger-Themen 12
B Packages einfach kopieren? Java Basics - Anfänger-Themen 13
N Mein Applet findet -online- einfach die Klasse nicht ! Java Basics - Anfänger-Themen 6
S Java rundet einfach auf 0 Java Basics - Anfänger-Themen 2
L Ein Bild auf ein JFrame legen. nicht so einfach? =( Java Basics - Anfänger-Themen 11
M Tablelayout einbinden - ich schaff's einfach nicht Java Basics - Anfänger-Themen 16
D Button Text will einfach nicht erscheinen Java Basics - Anfänger-Themen 6
M Methoden. ich versteh das einfach nicht! Bitte helfen! Java Basics - Anfänger-Themen 4
H Kann man in Java einfach einen Beep erzeugen Java Basics - Anfänger-Themen 2
C einfach aber komisch Java Basics - Anfänger-Themen 5
P Restart Button für einfach Applikation Java Basics - Anfänger-Themen 7
H RAF geht einfach nicht Java Basics - Anfänger-Themen 12
D RegEx Probleme - wahrscheinlich zu einfach. Java Basics - Anfänger-Themen 2
H Einfach Datenübergabe Java Basics - Anfänger-Themen 4
S RegEx Syntax - ich verstehe sie einfach nicht! Java Basics - Anfänger-Themen 3
V Teil eines Programms funktioniert einfach nicht Java Basics - Anfänger-Themen 2
V If Schleife wird beim ausführen einfach ignoriert Java Basics - Anfänger-Themen 4
D Einfach Leerzeile einfügen ? Java Basics - Anfänger-Themen 2
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
B Applet geht einfach nicht Java Basics - Anfänger-Themen 16
S UIManager kann einfach nicht aufgelöst werden Java Basics - Anfänger-Themen 4
R Einfach if-Abfrage Java Basics - Anfänger-Themen 7
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
A Einfach, gut erklärte Übungen!!! Java Basics - Anfänger-Themen 3
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
H Verkettete Liste Java Basics - Anfänger-Themen 7
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 5
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
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
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Anzeige


Oben