2011-08-21 4 views
0

Sur différents sites, je cherchais programme en Java faisant inverser l'ordre de liste chaînée (chaînée Liste et et la liste doublement chaînée) .Je a atterri sur différents sites commeInverser la liste individuellement liée?

1) http: // geek -o-pedia.blogspot.com/2007/07/how-would-you-reverse-singly-linked.html 2) http://stackoverflow.com/questions/354875/reversing-a-linked-list-in PointA-Comme je crois que ces programmes (prendre le lien 1) sont bons quand vous écrivez votre classe de liste liée comme le programme suppose que nous pouvons accéder à la classe de nœud que nous ne pouvons pas (Comme c'est classe interne privée dans la liste liée.)

Point B - En dehors de cela, ce programme inversera en permanence l'ordre de la liste des sources liées. Donc, quand nous itérer sur ce , nous obtiendrons toujours les éléments dans l'ordre inverse.

S'il vous plaît laissez-moi savoir si les deux points ci-dessus sont corrects

donc j'ai essayé de le faire moi-même

--Reversing la chaînée Liste

LinkedList list1 = new LinkedList(); 
    list1.add(1); 
    list1.add(2); 
    list1.add(3); 
    list1.add(4); 
    list1.add(5); 

LinkedList reverseList1 = new LinkedList(); 

int size= list1.size(); 

// below loop will revrse the order of source linked list i.e list1 

for(int i =size-1;i>=0;i--) 
{ 
reverseList1.add(size-i-1, list1.get(i)); 
} 

Je voulais juste assurer si au-dessus approche est correcte car je ne pouvais pas trouver ces approches sur internet que je trouve très simple. Partout où je pourrais trouver l'approche similaire à link1 et link2

posté à https://forums.oracle.com/forums/thread.jspa?threadID=2271413&tstart=0 aussi mais n'a pas obtenu de réponse correcte.

Répondre

1

Cela semble fonctionner correctement. Cependant, il n'y a pas besoin du 1er paramètre pour la méthode add - ajoutez déjà des inserts à la fin (et vous pouvez également utiliser addLast, qui est identique).

En outre, en utilisant get(i) autant de fois n'est pas efficace. J'itérer sur la première liste (avec foreach ou avec un iterator - et pour chaque appel d'élément addFirst

Vous pouvez également utiliser Collections.reverse, comme Panzerschreck a suggéré, ce qui est vraiment la meilleure façon de l'OMI

..
1

Avez-vous essayé d'utiliser l'un de ceux-ci?

Collections.sort(list, Collections.reverseOrder(cmp)); 
or 
Collections.reverse(list);