Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [java] Lista dwukierunkowa
230005
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


Nie ogarniam tematu list dwukierunkowych (IMG:style_emoticons/default/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.

Ten post edytował 230005 22.01.2010, 19:57:26
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 04:34