INSERT-First Menambahkan sebuah elemen yang diketahui alamatnya sebagai elemen pertama list. INSERT-First Menambahkan sebuah elemen yang diketahui nilainya sebagai elemen pertama list.

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