doppelt verkettete liste einfügen

newbie2009

Bekanntes Mitglied
hey leute habe ein problem mit der doppelt verketteten liste:

Java:
void addBehind(Object key){
		// erst 
		Datensatz vorletztes = ende.getVorgänger();
		Datensatz neu = new Datensatz(vorletztes,ende,key);
		vorletztes.setNachfolger(neu);
		ende.setVorgänger(neu);
		
	}

zum konstrkutor, erstes element gibt den vorgänger, zweites element den nachfolger, drittes den wert.
Was mich wundert ist, dass die methode funktioniert
wenn ich also die werte 11,13,15,17 einfüge befinden sie sich auch in dieser reihnefolge in der liste.

wenn ich mir die methode aber anschaue , sieht es für mich aus, als müsste der neue werte immer zwischen die zwei letzten eingefügt werden, ungefähr so :
Java:
liste:11,13     input-> 15      ergibt 11,15,13
so verstehe ich die methode, denn zuerst erhält man ja die referenz vom vorgänger und legt sie in vorletztes ab, dann erstellt man den neuen knoten mit der eben abgelegten referenz als vorgänger und dem ende als nachfolger.
Daher macht es irgendwie keinen sinn, dass die methode funktioniert.:(
 

eRaaaa

Top Contributor
Hi, an sich hast du Recht, allerdings kennen wir alle die Listimplementierung nicht.
Es muss ja auch nicht unbedingt so sein, dass man sagt, dass das Ende auf
Code:
null
zeigt, vllt ist ja hier ein Datensatz-Objekt welches das Ende markieren soll, dann würde die add-Methode Sinn machen.
Also:

11,13,ENDE
13 = vorletztes
13.setNachfolger->15
ENDE.setVorgaenger->15
-->
11,13,15,ENDE
 

newbie2009

Bekanntes Mitglied
Java:
public class doubleLinked {
	
	class Datensatz{
		private Datensatz vorgänger;
		private Datensatz nachfolger;
		private Datensatz position;
		private Object wert ;
		
		
		public Datensatz(){
			
		}
		
		public Datensatz(Datensatz vorgänger,Datensatz nachfolger, Object wert){
			this.vorgänger=vorgänger;
			this.nachfolger=nachfolger;
			this.wert=wert;
		}
		public Datensatz getVorgänger() {
			return vorgänger;
		}
		public void setVorgänger(Datensatz vorgänger) {
			this.vorgänger = vorgänger;
		}
		public Datensatz getNachfolger() {
			return nachfolger;
		}
		public void setNachfolger(Datensatz nachfolger) {
			this.nachfolger = nachfolger;
		}
		public Object getWert() {
			return wert;
		}
		public void setWert(Object wert) {
			this.wert = wert;
		}

		public void setPosition(Datensatz position) {
			this.position = position;
		}

		public Datensatz getPosition() {
			return position;
		}
		
	}
	
		
	Datensatz anfang=new Datensatz(null,null,"");
	Datensatz ende= new Datensatz(null,null,"");
	Datensatz position;
	
	
		doubleLinked(){
			
			
			
			anfang.setNachfolger(ende);
			ende.setVorgänger(anfang);
			position=anfang;
			
			
		}
	
		
		// bewegt zeiger um einen nach rechts
		void next(){
			if(position.getNachfolger()!=null){
				position=position.getNachfolger();
			}
		}
		
		
		//gibt liste aus
	void print(){
	 position=anfang;
	 while(position.getNachfolger()!=null){
		 next();
		 System.out.println(position.getWert()+"");
		 
	 }System.out.println();
	}

	void addBehind(Object key){
		// erst 
		Datensatz vorletztes = ende.getVorgänger();
		
		Datensatz neu = new Datensatz(vorletztes,ende,key);
		vorletztes.setNachfolger(neu);
		ende.setVorgänger(neu);
		
	}
	
	
		public static void main(String[] args) {
			
			doubleLinked list = new doubleLinked();
		
			list.addBehind(10);
			list.addBehind(11);
			list.addBehind(13);
			list.addBehind(15);
			list.addBehind(77);
			
			
			list.print();
		
			
		}
		
	
	}
 

eRaaaa

Top Contributor
War da jetzt noch eine Frage offen? :D

Java:
    Datensatz anfang=new Datensatz(null,null,"");
    Datensatz ende= new Datensatz(null,null,"");

siehe letzter Post
 

newbie2009

Bekanntes Mitglied
hehe ja stimmt anfang und ende werden nur als markierung benutzt :)
Aber dann müsste die methode doch auch funktionieren oder nich, auf den ersten blick tut sie es auch aber irgendwas läuft da verkehrt...

Java:
void addfirst(Object key){
		
		Datensatz elem = anfang.getNachfolger();
		Datensatz neu = new Datensatz(anfang,elem,key);
		anfang.setNachfolger(neu);
		
		
			
		}
:oops:

oh ich glaube das muss so heißen :D
Java:
		void addfirst(Object key){
		
		
		Datensatz next= anfang.getNachfolger();
		
		Datensatz neu = new Datensatz(anfang,next,key);
		anfang.getNachfolger().setVorgänger(neu);
		
		anfang.setNachfolger(neu);
		
		
			
		}
mm oder doch nich oh man referenzen verwirren mich immer :D
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
nur schnell überflogen, aber wahrscheinlich fehlt da das [c]elem.setVorgänger(neu);[/c] im ersten Code...

EDIT:
oh man referenzen verwirren mich immer
wenn du das so nicht kannst, mal es dir doch einfach auf:
Code:
ANFANG <--> 10 <-->  ENDE
die 11 willst du jetzt zwischen ANFANG und 10 einfügen.
ANFANG zeigt im Moment auf 10, d.h. du musst auf jedenfall dort den Nachfolger neu setzen (auf 11, vorher natürlich den Aktuellen merken *g*)
Das bedeutet auch immer dass du den Vorgänger von 11 setzen musst
- anfang.setNachfolger(11)
- 11.setVorgaenger(anfang)
Code:
ANFANG <--> 11     |     10  <-->  ENDE
so, jetzt musst du die beiden Teilen natürlich wieder zusammenfrickeln.

- 11.setNachfolger(tmpNachfolgerVonAnfang(10))
- tmpNachfolgerVonAnfang.setVorgaenger(11)

Code:
ANFANG <--> 11  <--> 10  <-->  ENDE
 
Zuletzt bearbeitet:

newbie2009

Bekanntes Mitglied
hehe vielen dank :)
aber so klappts jetzt :)

Java:
void addfirst(Object key){
		
		
		Datensatz next= anfang.getNachfolger();
		Datensatz neu = new Datensatz(anfang,next,key);
		anfang.getNachfolger().setVorgänger(neu);
		anfang.setNachfolger(neu);
		
		
			
		}
 
Ä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
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
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
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
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
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
D doppelt verkettete Liste Java Basics - Anfänger-Themen 16
S Doppelt Verkettete Liste Java Basics - Anfänger-Themen 7
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
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 12
B Doppelt verkettete Liste Java Basics - Anfänger-Themen 16
R Datentyp Ring - zyklisch doppelt verkettete Liste - HILFE! Java Basics - Anfänger-Themen 12
R doppelt verkettete Liste Java Basics - Anfänger-Themen 8
F doppelt verkettete liste! Java Basics - Anfänger-Themen 8
R doppelt verkettete azyklische Liste Java Basics - Anfänger-Themen 2
T Klasse in Java für doppelt verkettete Listen Java Basics - Anfänger-Themen 4
H Doppelt verkettete Listen Java Basics - Anfänger-Themen 2
S doppelt verkettete Listen Java Basics - Anfänger-Themen 4
X Vererbung: Doppelt verkettete Listen Java Basics - Anfänger-Themen 16
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
I Input/Output Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 3
N package wird doppelt im exporer angezeigt Java Basics - Anfänger-Themen 2
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
T Löschen in doppelt verketteter Liste Java Basics - Anfänger-Themen 1
L Input/Output Println wird doppelt ausgeführt Java Basics - Anfänger-Themen 11
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
B BufferedReader gibt Datei-Inhalt doppelt aus Java Basics - Anfänger-Themen 3
M Liste Implementation, doppelt next() Java Basics - Anfänger-Themen 13
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
Salo Datentypen "Doppelt" List(e) ("gesucht") Java Basics - Anfänger-Themen 6
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
T Java Methode wird unerwünscht doppelt aufgerufen?! Java Basics - Anfänger-Themen 4
OnDemand Doppelt Werte CSV Java Basics - Anfänger-Themen 2
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
E Erste Schritte Sortieren von Objekten in doppelt-verlinkter Liste Java Basics - Anfänger-Themen 9
S Methoden Methode wird doppelt aufgerufen ... Java Basics - Anfänger-Themen 5
J Mehrere Zufallszahlen erzeugen, aber keine darf doppelt erzeugt werden - Wie? Java Basics - Anfänger-Themen 5
B Doppelt gekettete Listen Java Basics - Anfänger-Themen 4
G PropertyChangeListener empfängt Events doppelt Java Basics - Anfänger-Themen 5
L doppelt verkette Liste Java Basics - Anfänger-Themen 5
H Fenster doppelt gezeichnet. Java Basics - Anfänger-Themen 2
G Einfügen aus Zwischenablage - alles doppelt? Java Basics - Anfänger-Themen 2
G JFileChooser kommt doppelt Java Basics - Anfänger-Themen 3
N Nullpointerexception bei Doppelt verketteter Liste Java Basics - Anfänger-Themen 7
M Listen richtig doppelt verkettet? Java Basics - Anfänger-Themen 13
D Exceptions in doppelt verketteter Liste Java Basics - Anfänger-Themen 5
C verify() wird doppelt aufgerufen (JTable + InputVerifier) Java Basics - Anfänger-Themen 8
H doppelt verkette liste Java Basics - Anfänger-Themen 2
L rückwärtsausgeben einer doppelt verketteten liste Java Basics - Anfänger-Themen 2
G JList und ListCellRenderer - Vector erscheint doppelt Java Basics - Anfänger-Themen 6
G JComboBox gibt SelectedItem immer doppelt aus Java Basics - Anfänger-Themen 4
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
M Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 2
R Zeilen aus datei lesen + doppelt gespeichert? Java Basics - Anfänger-Themen 3
G Trotz Abfrage immer noch Zahlen doppelt Java Basics - Anfänger-Themen 3
R Benutzerregistrierung: Doppelt registriert. Java Basics - Anfänger-Themen 8
M Verkettete Liste Java Basics - Anfänger-Themen 1
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
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
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A Verkettete Liste Java Basics - Anfänger-Themen 2
L verkettete Liste Java Basics - Anfänger-Themen 15
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
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
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
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

Ähnliche Java Themen

Neue Themen


Oben