WinFuture-Forum.de: Doppelt Verkettete Listen Elemete ( Knoten ) Tauschen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Doppelt Verkettete Listen Elemete ( Knoten ) Tauschen


#1 Mitglied ist offline   bastelhamster 

  • Gruppe: Mitglieder
  • Beiträge: 14
  • Beigetreten: 01. November 07
  • Reputation: 0

geschrieben 10. Januar 2008 - 19:47

Hallo,
ich habe da folgendes Problem.
Und zwar habe ich da eine Doppelt verkettete List
vorliegen.
Es soll eine Methode geschrieben werden,
mit dessen Hilfe ich zwei benachbarte Knoten miteinander
vertauschen kann.
D.h. Vertausche Knoten mit dessen Vorgänger.

Hat da jemand einen Ansatz oder einen Hinweis,
wo ich mehr Infos bekommen kann?

Egal ob nun in Java oder C++.........
0

Anzeige



#2 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 11. Januar 2008 - 07:58

Ich mache die Beispiele mal in Java.

Bei einer doppelt verketteten Liste, hält ein Element eine Referenz auf das vorherige und nachfolgende Element, was so aussehen könnte

public class Element {
	private Element previous;
	private Element next;

	... und entsprechende Setter und Getter
}


Wenn du nun zwei benachbarte Elemente tauschen möchte, müsstest du maximal vier Elemente anpassen:
1 2 3 4 (2 und 3 werden getauscht) => 1 3 2 4

Bedeutet,
1 hält eine Referenz auf 3
3 hält eine Referenz auf 1 und 2
2 hält eine Referenz auf 3
4 hält eine Referenz auf 2

Und das kannst du relativ simpel machen, indem du einfach nur die entsprechende Setter aufrufst.
0

#3 Mitglied ist offline   bastelhamster 

  • Gruppe: Mitglieder
  • Beiträge: 14
  • Beigetreten: 01. November 07
  • Reputation: 0

geschrieben 11. Januar 2008 - 09:07

hallo danke dir,
aber Setter und Getter und nänliches steht da nicht zur verfügung:
und zwar sihet es da so aus.

die liste hat einen zeiger auf den aktuellen knoten ( cursor ),
weiterhin besitzt jeder knoten einen verweis ( referenz ) auf den nachfolger ( next ) und eine referenz auf dern vorgänger ( pred ), sowie eine referenz ( val )
auf das datenobjekt, welches in dem konoten ist.
navigieren tut man mit cursor.next ( einen vor ) oder cursor.pred ( einen zurück ). mit cursor.val hat man zugrieff auf die val referenz.

0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 11. Januar 2008 - 09:48

Was anderes habe ich auch nicht geschrieben. :blink:

Natürlich kannst du direkt auf die Attribute zugreifen, aber in OOP sollte man sie immer kapseln.

Trotzdem bleibt das Prinzip gleich. Du musst die Knoten durchgehen und die Referenzen so ändern, wie im meinem vorherigen Post beschrieben.
0

#5 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.433
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 16. Januar 2008 - 00:19

Beitrag anzeigenZitat (Witi: 11.01.2008, 09:48)

Natürlich kannst du direkt auf die Attribute zugreifen, aber in OOP sollte man sie immer kapseln.

Trotzdem bleibt das Prinzip gleich. Du musst die Knoten durchgehen und die Referenzen so ändern, wie im meinem vorherigen Post beschrieben.


hört sich stark nach einer aufgabe aus dem unterricht an, weshalb er es vielleicht so machen muss.ich würde mir dafür eine methode schreiben, an die du zwei elemente übergibst. du hast also die objekte

...<->obj0<->obj1<->obj2<->obj3<->...

obj1 und obj2 willst du tauschen. dann schreibst du eine methode (nicht mit den namen in übergabeparametern durcheinander kommen:
private void TauscheObjekte(obj0, obj1) {
   obj2.prev = obj1.prev
   obj1.prev = obj2
   obj1.next = obj2.next
   obj2.next = obj1
}

Dieser Beitrag wurde von bLaCkRaBbIt bearbeitet: 16. Januar 2008 - 00:21

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0