Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [java] Lista dwukierunkowa
Forum PHP.pl > Inne > Hydepark
230005
Nie ogarniam tematu list dwukierunkowych ohmy.gif. Jutro 4 koła, dzisiaj czeka mnie jeszcze masa nauki więc czy mógłby mi ktoś rozjaśnić co mam zmienić lub dopisać w tym kodzie, żeby była to kozacka lista dwukierunkowa (część tego kodu jest z zajęć):

  1.  
  2.  
  3. public class Ludzie {
  4. Czlowiek c;
  5. Ludzie next = null;
  6. Ludzie prev = null;
  7.  
  8. Ludzie(Czlowiek cz, Ludzie n, Ludzie p){
  9. c = cz;
  10. next = n;
  11. prev = p;
  12. }
  13. Ludzie addFirst(Ludzie l){
  14. prev = l;
  15. l.next = this;
  16. return l;
  17. }
  18.  
  19. Ludzie addLast(Ludzie l){
  20. return l;
  21. }
  22.  
  23. Ludzie delCzl(Czlowiek c){
  24. if (c.equal(this.c)) return this.next;
  25. else {
  26. if (this.next != null) this.next = this.next.delCzl(c);
  27. return this;
  28. }
  29. }
  30. public String toString(){
  31. boolean koniec = false;
  32. String s = "[ ";
  33. Ludzie e = this;
  34. while (!koniec){
  35. s += e.c;
  36. if (e.next != null) {
  37. e = e.next;
  38. s+= ", ";
  39. }
  40. else koniec = true;
  41. }
  42. return s + " ]";
  43. }
  44. }
  45.  
  46.  


Dodawanie działa tak:

trzeci element -> drugi element -> pierwszy element

Teraz żeby dodać coś z prawej strony pierwszego elementu muszę przejść po wszystkich wskaźnikach next poprzedzających go elementów, a jego wskaźnik ustawić na właśnie dodany (a wskaźnik właśnie dodanego na niego) i robię to tak:

  1.  
  2. Ludzie addLast(Ludzie l){
  3. Ludzie next2 = next;
  4.  
  5. if(next2 != null) {
  6. while(next2.next != null) {
  7. next2 = next2.next;
  8. }
  9. }
  10.  
  11. if(next2 != null) {
  12. if(next2.next != null)
  13. next2.next = l;
  14. }
  15. else
  16. next = l;
  17.  
  18. l.prev = this;
  19. return l;
  20. }
  21.  


Problem w tym, że element się dodaje ale usuwane są poprzedzające.
Crozin
java.util.LinkedList jest implementacją listy dwukierunkowej. Alej jeżeli chcesz sobie samemu takową napisać to np. tutaj masz kod: http://en.literateprograms.org/Doubly_linked_list_(Java)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.