# Verkettete Liste implementieren



## Sara (9. Jan 2007)

Hi, 

ich habe eine Frage zu den Listen und zwar, wie sieht der Code vollständig aus, wenn, das letzte Objekt das erste sein soll und das vorletze das zweite..... 
z.B: head->h ->a ->l ->l ->o -> tail
wird zu:  head->o -> h-> a-> l-> l-> ->tail
... hallo wird zu ollah

Als Anfang:


```
public class int{ 

Node next; 
int wert; 
} 

public void listeDrehen(){ 

while(next.next!=null) {
head.next=???
.....
```

WIe ich das jetzt anfangen würde ist, dasss ich erstmal alle Objekte durchgehe bis auf das Letzte, und wenn das letzte erreicht worden ist dann füge "head" für das letzte und das vorletze... oder wie sieht es anders aus?

Gruß
Sara


----------



## Wildcard (9. Jan 2007)

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#reverse(java.util.List)


----------



## Wildcard (9. Jan 2007)

Ach so... du willst das selbst implementieren...
Sofern deine Liste doppelt verkettet ist, musst du eigentlich nur alle Zeiger umdrehen.


----------



## Marco13 (9. Jan 2007)

... und sofern sie nur einfach verkettet ist (was vermutlich durch die -> Pfeile angedeutet werden sollte) geht sowas meistens ziemlich elegant mit Rekursion (nicht unbedingt immer die effizienteste Lösung, aber hierfür ist es eigentlich bestens geeignet.)

Wenn die Liste nur ein Element enthält, gibt man das Element zurück und ist fertig.
Andernfalls enthält die Liste n+1 Elemente. Dann nimmt man das vorderste Element weg, dreht den Rest der Liste um, und hängt das vorderste Element ans Ende der umgedrehten Liste.

Das dann aber richtig umzusetzen ist trickier, als es im ersten Moment aussieht... Insbesondere will man am Ende ja den _Anfang_ der neuen Liste haben...


----------

