Metodin tehtävänä on muuttaa lista
(O1
,
O2
, ..., On
) ja
parametrina annettu olio element
listaksi
(O1
,
O2
, ..., On
, element
).
Metodi on määritelty seuraavasti:
(1) public void insertElementLast(Object element) { (2) List list = this; (3) while (list.next != null) { (4) list = list.next; (5) } (6) list.next = new List(element, null); (7) }
Tarkastelemme askel askelelta, miten metodi toimii. Käytämme yksinkertaista laatikko-nuoli-merkintää olioille ja muuttujille. Kukin olio esitetään laatikkona, joka sisältää olion tyypin sekä muuttujien arvot. Muuttujat ja olioiden sisältämät viittaukset (joilla on merkitystä metodin toiminnan kannalta) toisiin olioihin esitetään nuolina.
Kukin listan solmu sisältää muuttujassa data
viittauksen johonkin listan alkioon ja muuttujassa
next
viittauksen listan seuraavaan solmuun. Koska
metodin insertElementLast
toiminta ei riipu
muuttujan data
arvosta, esitetään listan solmut
laatikkoina, joissa on sisällä jokin nimi
Oi
, joka tarkoittaa viittausta johonkin
listaan sisältyvään olioon sekä viittaus seuravaan listan solmuun.
(1) public void insertElementLast(Object element) {
Metodin alussa this
viittaa parametrina annetun
listan ensimmäiseen solmuun. Lista sisältää alkiot
(O1
, O2
, ...,
On
).
(2) List list = this;
Rivin 2 suorituksen jälkeen muuttuja list
osoittaa samaan listan solmuun kuin this
. Muuttujaa
list
käytetään parametrina annetun listan läpikäyntiin.
(3) while (list.next != null) {
Rivillä 3 list
osoittaa johonkin listan solmuun
(ensimmäisellä kerralla samaan solmuun kuin this
,
myöhemmin muihin listan olioihin):
meillä on kaksi eri vaihtoehtoa:
a) Jos list.next != null
, eli
emme oli listan lopussa, joten menemme riville 4.
b) Jos list.next == null
, eli
lista on lopussa, joten menemme riville 6
(4) list = list.next;
Rivilla 4 tiedämme, että list.next != null
, joten
voimme siirtyä listassa askelen eteenpäin:
Tämän jälkeen jatkamme riviltä 3.
(6) list.next = new List(element, null);
Silmukan loputtua rivillä 6 tiedämme, että list.next ==
null
. Nyt voimme lisätä uuden solmun listan loppuun
Lopputulos on siis, että lista sisältää alkiot (O1
,
O2
, ..., On
, element
).