einfach verkettete Liste

RJN

Mitglied
Hallo,
ich habe Schwierigkeiten beim Hinzufügen. Es soll eine verkettete Liste sein, wo ich Tickets mithilfe von Nodes in eine andere Klasse verwalten soll. In der Ticket- und Nodes-Class sind nur Getters und Setters.

Java:
Public class Verwaltung
{
    private Node head;

    public boolean addTicket(Ticket t) {
        if (t == null)
        {
            return false;
        }
        if (head == null)
        {
            head = new Node(t, null);
            return true;
        }

        while (head != null) //Hier tritt der Fehler auf
        {
            //Hier prüfe ich, ob Ticket t schon vorhanden ist.
            if (head.getValue().getKunde().equals(t.getKunde()) && head.getValue().getProblem().equals(t.getProblem()))
            {
                return false;
            }
            if (head.getNext() != null)
            {
                head = head.getNext();
            }
            else
            {
                head = new Node(t, head);
                break;
            }
        }
        
        return true;
}

Mein Problem ist, dass ich die hinteren Tickets nicht überprüfen kann.
 
K

kneitzel

Gast
Du willst ja nur ein Element einfügen. So es nicht das erste Element ist, darfst du head nicht verändern.

Zum Durchlaufen der Liste musst du also eine lokale Variable verwenden, die du auf head setzt und dann so lange in der while Schleife bleibst, bis du am Ende bist.

Das wäre, was mir so auf Anhieb auffällt. Den Fehler den du bekommst hast du aber auch nicht wirklich gut beschrieben, daher ist unklar ob dies auch wirklich Dein Problem ist.
 

RJN

Mitglied
Danke für die Rückmeldung.

Sie haben gesagt, dass head unverändert bleiben soll. Sollte ich mithilfe der Laufvariable eine neue Node erstellen?
 

bytestream

Mitglied
Es ist exakt so, wie kneitzel sagt: Wenn du deine Suche immer am Anfang der Liste beginnen möchtest (und das solltest du), muss head die Referenz auf den Anfang der Liste halten. Zum Durchlaufen der Liste benutzt du einen Iterator, der in diesem Fall den Typ Node haben muss.

Zweifel bestehen von meiner Seite an der Bedingung in der while-Schleife, denn die Schleife wird nur solange ausgeführt, bis head null ist. Da dies aber genau der Moment ist, indem das neue Ticket in die Liste eingefügt werden soll, darf der Code für das Einfügen nicht in der while-Schleife stehen, oder? Deshalb habe ich deinen restlichen Code geraten und ein bisschen experimentiert.

Mir ist klar, dass in diesem Forum nur Hilfestellungen gegeben werden sollen. Aber in diesem Fall ist vielleicht eine Ausnahme erlaubt. Im Code findest du weitere, kleine Anmerkungen.

Viele Grüße


Java:
public class Verwaltung
{
    private Node head;
    
    public static void main(String[] args) {
        Verwaltung vw = new Verwaltung();
        
        // 1. Fall : ticket == null
        System.out.println(vw.addTicket(null));   // false
        
        // 2. Fall: head == null
        System.out.println(vw.addTicket(
                vw.new Ticket("Schneider", "null Problemo")));   // true
        
        // Nun existiert die Liste und hat genau ein Ticket.
        
        // 3. Fall: head != null UND ticket != null
        // Du möchtest die Liste mit einer while-Schleife durchlaufen.
        // Wenn kein Ticket eingefügt wird, soll false an die Aufrufstelle
        // zurückgegeben werden (und umgekehrt). Richtig?
        System.out.println(vw.addTicket(
                vw.new Ticket("Müller", "null Problemo")));   // true
        System.out.println(vw.addTicket(
                vw.new Ticket("Schneider", "null Problemo")));    // false
    }

    public boolean addTicket(Ticket t) {
        if(t == null) {
            return false;
        }
        if(head == null) {
            head = new Node(t, null);
            return true;
        }
        
        // Zu diesem Zeitpunkt enthält die Liste mindestens ein Ticket.
        
        Node iter = head;   // So kann head weiter den Listenanfang referenzieren.
        boolean inserted = false;
        while(!inserted) {
            if(iter.getTicket().getKunde().equals(t.getKunde())
                    && iter.getTicket().getProblem().equals(t.getProblem())) {
                break;
            } else {
                iter = iter.getNext();   // null oder weiteres Ticket
                if(iter != null) {
                    iter = iter.getNext();   // die Suche geht weiter
                } else {
                    iter = new Node(t, null);
                    inserted = true;
                }
            }
        }
        return inserted;
    }
    
    class Ticket {
        String kunde;
        String problem;
        
        Ticket(String kunde, String problem) {
            this.kunde = kunde;
            this.problem = problem;
        }
        
        String getProblem() {
            return problem;
        }
        
        String getKunde() {
            return kunde;
        }
    }
    
    class Node {
        Ticket ticket;
        Node next;
        
        Node(Ticket ticket, Node next) {
            this.ticket = ticket;
            this.next = next;
        }
        
        Node() {}
        
        Ticket getTicket() {
            return ticket;
        }
        
        Node getNext() {
            return next;
        }
    }
    
}
 

Kamil1

Gesperrter Benutzer
Mir ist klar, dass in diesem Forum nur Hilfestellungen gegeben werden sollen. Aber in diesem Fall ist vielleicht eine Ausnahme erlaubt. Im Code findest du weitere, kleine Anmerkungen.
Wenn dir bereits klar ist, dass Komplettlösung nicht erlaubt sind, warum postest du eine solche dann? So etwas käme ja nicht mal mir in den Sinn. 🤞

Es geht in diesem Forum darum, möglichst ausschweifend und fern vom Code den Lösungsweg zu umschreiben.
 

RJN

Mitglied
Danke für Ihre Hilfe! Es ist, wie Kamil1 gesagt hat, nicht so gut, wenn Sie meine Aufgabe machen. Ich hätte da eine Frage bezüglich ihre Code. Könnte man die Zeile 45 und 46 weglassen und stattdessen
if(iter.getNext() != null) {
iter = iter.getNext();
schreiben?
 

mihe7

Top Contributor
Es geht in diesem Forum darum, möglichst ausschweifend und fern vom Code den Lösungsweg zu umschreiben.
Es geht vornehmlich im Anfängerbereich darum, den Leuten mit Hilfe zur Selbsthilfe zu helfen, weil niemand etwas lernt, wenn er eine fertige Lösung kopiert. Dafür nimmt sich der ein oder andere dann auch mal für ausschweifende Erklärungen Zeit. Wer nur am Kopieren fertiger Lösungen interessiert ist, findet diese meist auf StackOverflow.
 

bytestream

Mitglied
Wenn dir bereits klar ist, dass Komplettlösung nicht erlaubt sind, warum postest du eine solche dann? So etwas käme ja nicht mal mir in den Sinn. 🤞

Es geht in diesem Forum darum, möglichst ausschweifend und fern vom Code den Lösungsweg zu umschreiben.
Sorry. Dachte es wär mehr eine Regel als ein Gesetz.
Es kommt nicht wieder vor.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
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
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
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
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
N Erste Schritte HelloWorld möchte einfach nicht laufen Java Basics - Anfänger-Themen 11
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
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
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

Ähnliche Java Themen

Neue Themen


Oben