Anda di halaman 1dari 2

Pengantar linked-list

Misalkan terdapat tabel di bawah ini ini:

TabInt

17 11 18 121 114 112 117 123 15 129


1 2 3 4 5 6 7 8 9 10

Tabel tersebut tidak terurut dan kita ingin menampilkan isi tabel secara terurut seperti di bawah ini:

129 123 121 117 114 112 18 17 15 11

Ada 3 cara untuk itu.

1. Cara pertama: urutkan isi tabel dengan algoritma maximum sort atau insertion sort, sehingga isi array
seperti di bawah ini:

129 123 121 117 114 112 18 17 15 11


1 2 3 4 5 6 7 8 9 10

Setelah itu, tampilkan isi array secara sekuensial mulai dari elemen pertama sampai terakhir.

2. Cara kedua: menggunakan sebuah tabel ranking.


Dengan cara kedua ini kita melakukan ranking terhadap elemen-elemen TabInt. Tabel ranking digunakan
untuk menyimpan ranking elemen tabInt, sementara itu tabel TabInt tidak berubah. Perhatikan ilustrasi di
bawah ini:

TabInt

17 11 18 121 114 112 117 123 15 129


1 2 3 4 5 6 7 8 9 10
TabRank

10 8 4 7 5 6 3 1 9 2
1 2 3 4 5 6 7 8 9 10

TabRank[i] menyimpan elemen tabel dengan ranking ke-i. Sebagai contoh:

- TabRank[1]=10 artinya ranking pertama atau elemen terbesar adalah TabInt dengan indeks 10, yaitu 129.
- TabRank[2]=8 artinya ranking pertama atau elemenkedua terbesar adalah TabInt dengan indeks 8, yaitu 123.
- …dan seterusnya

Procedure outputTabInt (input TabInt:…, TabRank: ….)


{IS. Terdefinisi TabInt dan TabRank
FS. Elemen-elemen TabInt sudah ditampilkan secara terurut dari yang paling besar }
Dictionary
i: integer
Algorithm
i1
while (i < 10) do
output(TabInt [TabRank[i]))
ii+1
endwhile {i > 10}
Output:
TabInt[tabRank[1]) = TabInt[10] = 129
TabInt[tabRank[2]) = TabInt[8] = 123
…..
TabInt[tabRank[10]) = TabInt[2] = 11
3. Cara ketiga: menggunakan TabNext, yang menyimpan indeks elemen berikutnya yang akan ditampilkan.

Pertama-tama, simpan indeks TabInt yang berisi nilai TabInt terbesar pada variabel First. Setiap elemen
TabNext menyimpan indeks TabInt yang elemennya akan dicetak berikutnya. Elemen First dan TabNext
membentuk rantai yang menghubungkan elemen terbesar TabInt ke elemen terbesar kedua, kemudian ke
elemen ketiga terbesar, dan seterusnya, hingga elemen terkecil.

Kemudian, cetak elemen TabInt dimulai dari TabInt[First], yaitu TabInt[10], lalu TabInt[8], TabInt[4],
….TabInt[2]. Secara umum, setelah TabInt[i] dicetak, elemen selanjutnya yang akan dicetak adalah
TabInt[TabNext[i]].

Perhatikan ilustrasi berikut:

TabInt

17 11 18 121 114 112 117 123 15 129


1 2 3 4 5 6 7 8 9 10
First: 10
TabNext

9 0 1 7 6 3 5 4 2 8
1 2 3 4 5 6 7 8 9 10

First bernilai 10 artinya elemen pertama yang akan dioutputkan adalah TabInt[10], yaitu 129.
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[10]]=TabInt[8]=123
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[8]]=TabInt[4]=121
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[4]]=TabInt[7]=117
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[7]]=TabInt[5]=114
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[5]]=TabInt[6]=112
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[6]]=TabInt[3]=18
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[3]]=TabInt[1]=17
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[1]]=TabInt[9]=15
Elemen berikutnya yang akan ditampilkan adalah TabInt[TabNext[9]]=TabInt[2]=11

Karena TabNext[2]=0 maka tidak ada lagi elemen TabInt yang akan ditampilkan. Dengan kata lain proses
selesai.

Di bawah ini algoritma untuk menampilkan isi TabInt dengan menelusuri TabNext.

Procedure outputTabInt (input TabInt:…, TabNext: ….)


{IS. Terdefinisi TabInt dan TabNext
FS. Elemen-elemen TabInt sudah ditampilkan secara terurut dari yang paling besar }
Dictionary
i: integer
Algorithm
i  First
while (i != 0) do
output(TabInt[i])
i  TabNext[i]
endwhile
{i = 0}

Secara lojik, TabInt dan TabNext bisa digambarkan dalam sebuah list berkait linier seperti di bawah ini:

Anda mungkin juga menyukai