
public class Ludzie { Czlowiek c; Ludzie next = null; Ludzie prev = null; Ludzie(Czlowiek cz, Ludzie n, Ludzie p){ c = cz; next = n; prev = p; } Ludzie addFirst(Ludzie l){ prev = l; l.next = this; return l; } Ludzie addLast(Ludzie l){ return l; } Ludzie delCzl(Czlowiek c){ if (c.equal(this.c)) return this.next; else { if (this.next != null) this.next = this.next.delCzl(c); return this; } } boolean koniec = false; Ludzie e = this; while (!koniec){ s += e.c; if (e.next != null) { e = e.next; s+= ", "; } else koniec = true; } return s + " ]"; } }
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:
Ludzie addLast(Ludzie l){ Ludzie next2 = next; if(next2 != null) { while(next2.next != null) { next2 = next2.next; } } if(next2 != null) { if(next2.next != null) next2.next = l; } else next = l; l.prev = this; return l; }
Problem w tym, że element się dodaje ale usuwane są poprzedzające.