einfach verkettete Liste -> Elemente vertauschen

Status
Nicht offen für weitere Antworten.

chrizz_h

Mitglied
Hi miteinander...
habe in muehevoller Arbeit eine einfach verkettete Liste implementiert (beliebte Hausaufgabe).
Was mich jedoch schon seit Stunden wurmt, ist, wie man Listenelemente von Typ Comparable,
bzw. beliebigen Typs, miteinander vertauscht. (z.B. um einen Sortieralgorithmus zu implementieren).
Scheint in Gegensatz zu nem Array nicht ganz so leicht mit XOR zu realisieren.
Mein Ansatz ist wohl auch eher schlecht als recht, reicht aber sicherlich aus, um mich zu maßregeln...

Code:
public void swapPosition(int index1, int index2){
		Node temp;
		Node swapElem1 = head; //head ist der anfang der liste
		Node swapElem2 = head;
		for(int i= 1;i<index1-1;i++){ 
			if(index1 == 1){
				swapElem1= head; break;
			}
			swapElem1 = swapElem1.next;
		}
		for(int j = 1;j<index2-1;j++){
			if(index2 == 1){
				swapElem2 = head; break;
			}
			swapElem2 = swapElem2.next;
		}
		temp = swapElem2.next; //schaetze hier und im folgenden liegt der fehler
		swapElem2.next = temp.next;
		temp.next = swapElem1.next;
		swapElem1.next = temp;
	}

Achja, eventuelle Abruchbedingungen hab ich bislang auch außen vor gelassen!
Waere schon, wenn mir da ein geschultes Auge weiterhelfen koennte.
Habt Dank...
chrizz
 
A

Anmeldeboykottierer

Gast
Hi,
hm, sieht wirklich stark nach typ. Hausaufgaben aus. Insbesondere kommt hier das typische "Hausaufgaben werden in (fast) keinem Forum beantwortet". Das heißt natürlich nur, dass du keine geschenkte Lösung bekommst (die dir auch wirklich nichts bringen würde, z.B. wenn es eine Klausur gibt).

Damit dir jmd. helfen kann, musst du immer viel Information geben (steigert die Wahrscheinlichkeit, dass dir jmd. so hilft, dass du weiter kommst). In deinem Fall wäre es also schön, wenn du erklären kannst, wie dein Code entstanden ist. Geh mal die einzelnen Codestücke durch und erkläre etwas genauer, warum du was machst.
Nebenbei bemerkt, mich würde sogar interessieren, wie man in einem Array mit XOR vertauschen kann.

Schreib einfach erstmal die Idee deines Algorithmus in Worten (ganz ohne Java) auf. Und danach sagst du mal, was davon sich an welcher Stelle wiederfindet.
Vielleicht solltest du auch drüber nachdenken, die for-Schleifen durch eine andere Struktur zu ersetzen. Ein break ist zwar natürlich erlaubt und erfüllt seinen Zweck, aber eine while-Schleife ist da einfach leichter zu lesen (man kann bei dir das break leicht übersehen, wenn es nicht gerade blau in der Zeile steht).
Wenn du die Schleife umwandelst, kannst du dir auch leichter überlegen, wie lange du wirklich weiterlaufen musst, wirklich bis index1 den Wert 1 hat?

Gruß Der Unwissende
 

leifg

Mitglied
ich kann dir grad mal sagen wie ich vorgehe:

am besten ist, man zeichnet bevor man so einen algorithmus entwickelt eine kleine skizze (typisch: lauter kästchen die jeweils auf das nächste kästchen zeigen)

das problem bei einfach verketteten listen ist, dass keinen zugriff auf das vorherige element hat

blöderweise muss man die next referenz des vorherigen elements auf das getauschte element biegen

also erstmal nach dem vorderen element suchen und die next referenzen umbiegen

danach dann die next referenz des eigentlichen elements auf das richtige element setzen

abbruchbedingungen die man einbauen sollte sind:

- weniger als 2 elemente in liste
- angegebener index überschreitet die länge der liste

ich habe selbst auch diese tauschalgorithmus im studium durchgenommen. damals haben wir aber der tausch methode keine integer übergeben, sonder wir haben einfach mit 2 nodes gearbeitet.

hat den vorteil, dass die suchschleifen dann viel einfacher werden

Code:
tauschen(Node Node1, Node Node2)
{
 Node counter = head;
 while (counter.next != Node1)
 {
   counter = counter.next;
  }
...
}

findet das element vor Node1 (while (counter != Node1) findet Node1)

hoffe das hilft dir weiter
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
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
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