verkettete Liste

L

LeonInfo19

Bekanntes Mitglied
Hallo, es soll eine Klasse Datum als verkette Liste geschrieben werden, die garantiert,dass es zu einem Datum auch nur ein Objekt gibt.
Dazu gibt es zwei statische Variablen:
-first für das zuerst erzeugte Datums-Objekt
-last für das bisher letzte erzeugte Objekt
Jedes Datum-Objekt hat ein Attribut next, das auf das nächste Objekt verweist.
So soll es vllt aussehen.

Java:
class Date {
    // Attribute (Instanzvariablen):
    private int day;
    private int month;
    private int year;
    private Date next;
   
    // Klassen-Attribute (statische Variablen):
    private static Date first = null;
    private static Date last  = null;
   
    // Lesezugriff fuer Attribute:
    public int day()   { return this.day; }
    public int month() { return this.month; }
    public int year()  { return this.year;}
   
   
   
   
    private Date(int d, int m, int y) {
        this.day   = d;
        this.month = m;
        this.year  = y;
    }
       
        // Suchen / Erzeugen von Objekten:
        public static Date get(int d, int m, int y) {
            // Falls noch gar keine Objekte:
            if(first == null) {
                first = new Date(d, m, y);
                last = first;
                return first;
            }
            // Sonst suche Datum in Liste:
            for(Date o = first; o != null;o = o.next) {
                if(o.day == d && o.month == m && o.year == y)return o;
                }
            // Nicht gefunden, neues Objekt erzeugen
            // und hinten an Liste anhaengen:
            Date n = new Date(d, m, y);
            last.next = n;
            last = n;
            return n;
        }
}

Ich habe eine Frage zu den letzten Zeilen. Auf was greift man denn mit last.next zu?
Es handelt sich doch beides um Date-Objekte.
 
L

LeonInfo19

Bekanntes Mitglied
Also im Normalfall auf das aktuelle Objekt. Sieht man dann "last" als Objekt und next als die zugehörige Variable an?
 
mihe7

mihe7

Top Contributor
Code:
Zu Beginn gilt first == null, last == null 

1. Aufruf von get(1, 1, 2019):

first == null:
  es wird ein neues Date-Objekt erzeugt,
  first und last zeigen auf dieses 
  und first wird zurückgegeben

Die Situation stellt sich dann wie folgt dar:

first
 |
 v            next 
[1, 1, 2019] -----> null 
 ^
 |
last 

Bei folgenden Aufrufen gilt first != null

2. Aufruf von get(2, 1, 2019) 

Suche verläuft erfolglos. 

a) Es wird ein neues Date-Objekt (n) erzeugt.


first                            n
 |                               |
 v            next               v            next
[1, 1, 2019] -----> null        [2, 1, 2019] -----> null
 ^
 |
last 
 

b) last.next = n; last zeigt aktuell auf [1, 1, 2019]; dessen next wird auf n gesetzt, 
   dadurch entsteht eine Verkettung:

first                            
 |                                
 v                next = n                    next
[1, 1, 2019] -----------------> [2, 1, 2019] -----> null
 ^
 |
last 

c) last = n; last soll auf das neue Element zeigen


first                            
 |                                
 v                next = n                    next
[1, 1, 2019] -----------------> [2, 1, 2019] -----> null
                                ^
                                |
                               last
 
X

Xyz1

Gast
Danke für die ausführliche Darstellung der Entwicklung von first, last, next usw. @mihe7 :) . Aber schaute mir gerade Inception an, danach weiß man ohnehin nicht mehr, welches Jahr wir haben. :(
 
L

LeonInfo19

Bekanntes Mitglied
Danke mihe7 für die anschauliche Erklärung. Das hat mir sehr geholfen;) Warum können den last und first auch nicht static sein. Man braucht doch für alle Klassen jeweils die Gewissheit, ob last bzw first etwas referenziert oder nicht.
 
mihe7

mihe7

Top Contributor
Eine einfach verkettete Liste ist eine rekursive Datenstruktur: jedes Element der Liste ist selbst auch erstes Element einer einfach verketteten Liste. Eine Liste ist also durch ein Element gegeben (die restlichen Elemente ergeben sich ja über die Verkettung).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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 5
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
T Verkettete Liste Java Basics - Anfänger-Themen 14
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
R Datentyp Ring - zyklisch doppelt verkettete Liste - HILFE! Java Basics - Anfänger-Themen 12
E einfach verkettete liste, nullPointerException Java Basics - Anfänger-Themen 5
S Queue als verkettete Liste Java Basics - Anfänger-Themen 9
R doppelt verkettete Liste Java Basics - Anfänger-Themen 8
F doppelt verkettete liste! Java Basics - Anfänger-Themen 8
M Verkettete Liste (schritt für schritt durchlauf) Java Basics - Anfänger-Themen 5
R doppelt verkettete azyklische Liste Java Basics - Anfänger-Themen 2
Z Zyklisch verkettete Liste Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben