Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46
7
procedure CreateList Output L :List
{ I.S. sembarang} {F.S. terbentuk list L yang kosong : FirstL diinisialisasi dengan NIL }
Kamus: Algoritma :
FirstL ← Nil
IV.3 Penyisipan sebuah elemen pada list linier
Insert : ElmtList x L → L { Menyisipkan sebuah elemen ke dalam list }
Fungsi insert penyisipan harus dijabarkan lebih rinci, karena dapat menjadi penyisipan sebagai elemen pertama, setelah sebuah address P atau penyisipan menjadi
elemen terakhir. Berikut ini akan diberikan skema prosedur penyisipan yang diturunkan dari definisi
fungsional tersebut. Penyisipan sebuah elemen dapat dilakukan terhadap sebuah elemen yang sudah
dialokasi diketahui address-nya, atau sebuah elemen yang hanya diketahui nilai Info-nya berarti belum dialokasi. Perhatikanlah perbedaan ini pada realisasi primitif.
IV.2.1 INSERT-First Menambahkan sebuah elemen yang diketahui alamatnya sebagai elemen pertama list.
Insert elemen pertama, List tidak kosong :
Initial State First
P
P Final State
First
Insert elemen pertama, List kosong :
First
P Final State
First
P Initial State
Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46
8
procedure InsertFirst InputOutput L :List, Input P: address
{ I.S. List L mungkin kosong, P sudah dialokasi, P
≠ Nil, NextP=Nil } {F.S. P adalah elemen pertama list L }
{ Insert sebuah elemen beralamat P sbg elmt pertama list linier L yang mungkin kosong}
Kamus: Algoritma :
NextP ← FirstL
FirstL
← P
IV.2.1 INSERT-First Menambahkan sebuah elemen yang diketahui nilainya sebagai elemen pertama list.
Tahap pertama : Insert Nilai 3 sebagai elemen pertama, List : karena yang diketahui adalah nilai, maka
harus dialokasikan dahulu sebuah elemen supaya nilai 3 dapat di-insert Jika alokasi berhasil, P tidak sama dengan Nil
Tahap kedua : insert Insert ke list kosong
First
P Final State
First
P Initial State
3
P
3
3 3
7 5
3
3 Insert elemen pertama, List tidak kosong :
Initial State First
P
P Final State
First
3
3 7
5
Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46
9
procedure InsFirst InputOutput L :List, Input InfoE: infotype
{ I.S. List L mungkin kosong } {F.S. Sebuah elemen dialokasi dan menjadi elemen pertama list L, jika alokasi
berhasil. Jika alokasi gagal list tetap seperti semula } { Insert sebuah elemen sbg elmt pertama list linier L yang mungkin kosong}
Kamus: Function AlokasiX:infotype
→ P:address; {Menghasilkan address yang dialokasi. Jika alokasi berhasil, InfoP=InfoE,
dan NextP=Nil. Jika alokasi gagal, P=Nil} P :address {perhatikan: P adalah variabel lokal Akan dibahas di kelas }
Algoritma :
P ← AlokasiInfoE
if P ≠ Nil then
NextP
← FirstL;FirstL ← P
IV.2.2. INSERT-AFTER : menyisipkan sebuah elemen beralamat P setelah sebagai suksesor dari sebuah elemen
list linier yang beralamat Prec
procedure Insert-After Input P,Prec: address { I.S. Prec adalah elemen list, Prec
≠ Nil, P sudah dialokasi, P ≠ Nil, NextP=Nil }
{F.S. P menjadi suksesor Prec } { Insert sebuah elemen beralamat P pada List Linier L
}
Kamus: Algoritma :
NextP ← NextPrec
NextPrec ← P
Initial State P
Prec
Final State P
Prec
Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46
10
IV.2.3. INSERT-Last Menyisipkan sebuah elemen beralamat P setelah sebagai elemen terakhir sebuah list
linier. Ada dua kemungkinan list kosong atau tidak kosong
Insert sebagai elemen terakhir list tidak kosong
Insert sebagai elemen terakhir list tidak kosong:
procedure Insert-Last InputOutput L:List, Input P : address { I.S. List L mungkin kosong, P sudah dialokasi, P
≠ Nil, NextP=Nil } {F.S. P adalah elemen trerakhir list L }
{Insert sebuah elemen beralamat P sbg elemen terakhir dari list linier L yg mungkin kosong}
Kamus
Last : address {address untuk traversal, pada akhirnya address elemen terakhir}
Algoritma :
if FirstL=Nil then { insert sebagai elemen pertama } InsertFirst L,P
else { Traversal list sampai address terakhir }
{Bagaimana menghindari traversal list untuk mencapai last ?} Last
← FirstL while NextLast
≠ Nil do Last
← NextLast {NextLast = Nil, Last adalah elemen terakhir; Insert P after Last}
Insert-AfterP,Last
Final State
Initial State P
P Final State
Initial State First
First
P Last
Last
P
Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46
11
procedure InsLast InputOutput L:List, Input InfoE : Infotype
{ I.S. List L mungkin kosong } {F.S. Jika alokasi berhasil, InfoE adalah nilai elemen trerakhir list L }
{ Jika alokasi gagal, maka F.S. = I.S. } {Insert sebuah elemen beralamat P jika alokasi berhasil sbg elemen terakhir dari list
linier L yg mungkin kosong}
Kamus Function AlokasiX:infotype
→ P:address; {Menghasilkan address yang dialokasi. Jika alokasi berhasil, InfoP=InfoE,
dan NextP=Nil. Jika alokasi gagal, P=Nil} P : address;
Algoritma :
P ← AlokasiInfoE
if P ≠ Nil then {insert sebagai elemen pertama }
InsertLast L,P
IV.3. Penghapusan sebuah elemen pada list linier