Listen

newjava^h

Neues Mitglied
Guten Abend zusammen, ich versuche mich gerade am Thema Listen und habe mal ein kleines Grundgerüst dazu aufgebaut. (Bei Bedarf sind Verbesserungen natürlich erwünscht) Hier mal mein bisheriger Code:

Java:
class Link 
{ 
    //Attribute 
    int daten; 
    Link naechster; 
 
    //Konstruktor 
    Link(int daten, Link naechster) 
    { 
        this.daten = daten; 
        this.naechster = naechster;      
    } 
} 
 
public class Liste 
{ 
   //Attribute 
   private Link anfang; 
   private Link ende; 
 
   //Konstruktor 
   public Liste() 
   { 
        anfang = new Link(-1, null); 
        ende = new Link (-1, anfang);   
        anfang.naechster = ende;  
   } 
 
   public void einfuegenElement(int neuerWert) 
   { 
       Link neuerLink = new Link(neuerWert, ende); 
       Link bisherLetzter = ende.naechster; 
       bisherLetzter.naechster = neuerLink; 
       ende.naechster = neuerLink; 
   } 
    
   // Liefert Zeiger auf erstes Nutzelement zurück 
   public Link getAnfang()  
   { 
      return anfang.naechster; 
   } 
    
   public Link getEnde()  
   { 
      return ende; 
   }  
      
}

Mein Problem hierbei ist, die Implementierung einer Klassenmethode namens "public static Liste merge (Liste liste1, Liste liste2)". Mein Ziel ist es aus zwei absteigenden Listen eine neue absteigende Liste erzeugen die alle Werte der anderen beiden Listen enthält, diese soll dann an den Aufrufer zurückgegeben werden.

Nunja wenn ich ehrlich bin weiß ich leider keinen Ansatz wie ich hier vorgehen soll. Ist den mein bisheriger Aufbau der Liste soweit korrekt? Oder gibts da Verbesserungsvorschläge? Bringt nämlich nix wenn ich mich hier an einer bisher unlösbaren Aufgabe versuche wenn schon die Basis falsch ist. Es wäre schön wenn mir jemand einen Ansatz zu meinem Problem liefern könnte, mit dem ich weiterarbeiten könnte, zur Zeit fehlt mir jegliche Idee zu einer vernünftigen Vorgehensweise -.- Würde mich über Antworten sehr freuen!
 
G

Gonzo17

Gast
Das sieht ein bisschen konfus aus. Die Klasse "Link" ist soweit in Ordnung, ich würde sie aber eher "Listeneintrag" nennen oder sowas. Die Liste selbst ist dann nicht mehr gut.

Im Konstruktor musst du dir erstmal überlegen was eine leere Liste bedeutet. Ich würde sagen, dass es bei einer Liste einen Einstiegspunkt gibt, also einen Anfang, aber das Ende ist unnötig. Du setzt also ein neues Objekt als Anfang, wobei der Parameter "naechster" natürlich null ist, da es noch keinen nächsten gibt.

Die Methode "einfuegen" könnte dann so funktionieren, dass du mit dem ersten Element beginnst und solange auf das nächste Element springst, bis es "null" ist und genau dann setzt du an diese Stelle das einzufügende Element. Natürlich brauchst du da immer linearen Aufwand und musst einmal durch die ganze Liste. Ist aber bei einfach verketteten Listen so.

Die Methoden, die dir Anfang und Ende liefern, sind auch simpel. Für den Anfang gibst du einfach das erste Element selbst zurück, für das Ende eben das letzte Element der Liste (bei diesem Element ist logischerweise "naechster" auf null).

So, jetzt das "merge". Das ist ziemlich simpel. Du hast Liste 1 und willst Liste 2 hintendran hängen. Das bedeutet schlicht und ergreifend, dass du beim letzten Element von Liste 1 als "naechster" das erste Element von Liste 2 einträgst. Damit zeigt das Ende von Liste 1 auf den Anfang von Liste 2.
 

XHelp

Top Contributor
Zu der jetzigen Liste: die
Code:
einfuegenElement
-Methode sieht falsch aus. Mal dir mal so eine Liste auf und spiel mal auf dem Blatt durch was da passiert. Es geht um die Zeile 32 und 34.

Zu deinem Problem: nimm eine Liste als Ausgang. Dann musst du die von vorne durchlaufen und gucken, zwischen welchen Elementen das erste Element aus der 2. Liste passt. Anschließend es zwischen diesen beiden Elementen einfügen. Dann guckst du ob das 2. Element aus der 2. Liste passt, wenn nicht, die Liste weiter durchlaufen etc.
 

HimBromBeere

Top Contributor
Naja, völlig abwägig finde ich das mit dem Ende nicht, spart das ewige Suchen nach dem Schwanz der Schlange. Wenn die Liste dann auch noch doppelt verketet werden soll, ergibt sich daraus eine rückwärts-Lesemöglichkeit, was durchaus seinen Reiz hat (OK, die gints imho auch ohne Ende-Variable...).
Das mit frm merge hab ich aber anders verstanden: es soll nicht Liste2 an 1 angehänfgt, sondern mit dieser zusammen sortiert werden. Dafür kannst du entweder alles zusammenschmeißen und die neue Liste sortieren, oder aber du suchst für jedes neue Element aus Liste 2, welches du in deine große Liste einfügst, welches Element aus Liste1 GERADE NOCH SO kleiner als dieses ist und fügst es hinten an... finde ich zwar schwieriger, dürfte aber schneller sein...
 

Xpisto

Aktives Mitglied
Also mit dem normalen verketten kann ich dir helfen, aber wie man dann sortiert weiss ich leider nicht, vllt kann da jemand helfen der mehr ahnung hat? :)

Verketten

Java:
public void verketten(Liste zweiteListe) 
{ 
   if (!zweiteListe.istLeer()) 
   { 
     Link zeigerAufErstesElementDerZweitenListe = zweiteListe.getAnfang().naechster; 
     Link zeigerAufVorletztesElement = ende.naechster; 
     zeigerAufVorletztesElement.naechster = zeigerAufErstesElementDerZweitenListe;
     ende = zweiteListe.getEnde();  
   } 
}

Also mich interessiert diese frage auch brennend, hoffentlich kann jemand helfen.
 

Xpisto

Aktives Mitglied
Das mit frm merge hab ich aber anders verstanden: es soll nicht Liste2 an 1 angehänfgt, sondern mit dieser zusammen sortiert werden. Dafür kannst du entweder alles zusammenschmeißen und die neue Liste sortieren, ...


Finde diesen Ansatz am besten alles erstmal verketten und dann sortieren, man muss es sich aj nicht umständlich machen. Wie würde man dass sortieren denn dann umsetzen? in meiner vorlesung steht z.b. gar nichts über das sortieren von listen.....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Listen in Listen in Listen ... ??? Java Basics - Anfänger-Themen 2
XWing listen Java Basics - Anfänger-Themen 7
FunkyPhil94 addLast und addFirst bei Listen Java Basics - Anfänger-Themen 6
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
S Lineare listen verkettung Java Basics - Anfänger-Themen 7
S Listen Java Basics - Anfänger-Themen 12
S Listen , Nodes am ende anängen Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
M Java Listen Java Basics - Anfänger-Themen 4
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A PhoneBook mit verketteten listen Java Basics - Anfänger-Themen 48
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
S Erklaerung Listen Java Basics - Anfänger-Themen 27
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L Skip Listen Java Basics - Anfänger-Themen 5
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
L Wie testet man (selbstgeschriebene) Listen sinnvoll? Java Basics - Anfänger-Themen 2
F Problem mit Listen Java Basics - Anfänger-Themen 5
J Listen Operationen Java Basics - Anfänger-Themen 4
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
A Sortierte Listen Java Basics - Anfänger-Themen 4
L Datenstrukturen/ Listen Java Basics - Anfänger-Themen 17
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
L Listen und Felder Java Basics - Anfänger-Themen 2
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
R Arrays und Listen Java Basics - Anfänger-Themen 1
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
F Multidimensionale Listen Java Basics - Anfänger-Themen 3
F Wie String in unterschiedliche Listen teilen Java Basics - Anfänger-Themen 7
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
T Objekte in Listen vererben Java Basics - Anfänger-Themen 3
A Klassen Klassen und Listen... Java Basics - Anfänger-Themen 5
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
S Methoden Vergleichen von zwei Listen in der Geschwindigkeit von O(n+m) Java Basics - Anfänger-Themen 32
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
C Listen Java Basics - Anfänger-Themen 3
C Zwei Listen verbinden Java Basics - Anfänger-Themen 1
C Zahlen merken mit Hilfe von Arrays/Listen Java Basics - Anfänger-Themen 2
E Feld von verketteten Listen Java Basics - Anfänger-Themen 11
T Überprüfung einer Aufgabe zu verketteten Listen Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
JarJarBigs Frage zu Listen Java Basics - Anfänger-Themen 2
N verkettete Listen Java Basics - Anfänger-Themen 4
O Listen sort-Methode Java Basics - Anfänger-Themen 1
I Listen sortieren bei mehreren Listen zu einer Java Basics - Anfänger-Themen 2
L Lineare Listen Java Basics - Anfänger-Themen 2
S Listen Objekte nach LocalDateTime sortieren Java Basics - Anfänger-Themen 2
D Methoden Listen generieren Java Basics - Anfänger-Themen 4
A Sichtbarkeit in Methoden/Listen Java Basics - Anfänger-Themen 3
M verkettete Listen Java Basics - Anfänger-Themen 1
D Klausur Vorbereitung: Listen, Rekursion, Bäume & Vererbung Java Basics - Anfänger-Themen 3
S Vergleich von Listen Java Basics - Anfänger-Themen 6
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 2
M Listen erstellen mit unterschiedlichen Reihenfolgen Java Basics - Anfänger-Themen 3
I Zwei Listen vergleichen bei n:m Beziehung Java Basics - Anfänger-Themen 2
I Zwei Listen: Wenn nicht vorhanden löschen Java Basics - Anfänger-Themen 4
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
L Best Practice Alle Kombinationen aus Listenelementen, Anzahl Listen unterschiedlich Java Basics - Anfänger-Themen 6
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
S Unsortierte Listen - Frage zur "Verkettung" Java Basics - Anfänger-Themen 1
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 7
I Listen, for - Schleifen Java Basics - Anfänger-Themen 8
P Listen Size stimmt nicht Java Basics - Anfänger-Themen 5
O Objekt Listen serialisierung und deserialisieren Java Basics - Anfänger-Themen 5
L Collections Objekte in Listen speichern Java Basics - Anfänger-Themen 3
G 2 Listen kombinieren und nach abc sortieren Java Basics - Anfänger-Themen 9
D Annonyme Innere Klasse: Listen mit geradem Index ausgeben Java Basics - Anfänger-Themen 6
G Listen sortieren Java Basics - Anfänger-Themen 3
G Generic und Listen Java Basics - Anfänger-Themen 8
R SQL ähnlicher Filter für Java Listen Java Basics - Anfänger-Themen 2
Y Collections 4 Listen Java Basics - Anfänger-Themen 14
S OOP/ Listen...etc... Java Basics - Anfänger-Themen 14
E Listen Java Basics - Anfänger-Themen 2
V Methoden Verkettete Listen Index eines Elementes ausgeben Java Basics - Anfänger-Themen 10
B Listen Java Basics - Anfänger-Themen 3
B eigene klasse in listen eintragen Java Basics - Anfänger-Themen 6
B Map per Listen Java Basics - Anfänger-Themen 2
S Erfahrungswerte von schnelles durchlaufen von Listen mit 2 Werten Java Basics - Anfänger-Themen 10
Joew0815 Problem mit Listen: add() Java Basics - Anfänger-Themen 11
P Zeichenorientierte & Serialisierte Datenverarbeitung Listen Java Basics - Anfänger-Themen 8
E Listen und Generics Java Basics - Anfänger-Themen 9
L dynamisches erzeugen von array Listen Java Basics - Anfänger-Themen 7
E Listen und Duplikate Java Basics - Anfänger-Themen 2
R Hilfe bei Listen Java Basics - Anfänger-Themen 10
F Collections Liste von Listen Java Basics - Anfänger-Themen 21
A Methoden Anfängerfrage: 2 Listen Vergleichen Java Basics - Anfänger-Themen 7
walker23m C++ Listen iteratoren in Java umwandeln Java Basics - Anfänger-Themen 3
X Listen und verschiedene Methoden Java Basics - Anfänger-Themen 6
S Listen Klasse selbst schreiben Java Basics - Anfänger-Themen 6
propra Objekte in mehreren Listen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben