DeleteAfter : Penghapusan suksesor sebuah elemen : DELETELast : Menghapus elemen terakhir list dapat dilakukan jika alamat dari eemen sebelum

Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46 12 procedure DeleteFirst InputOutput L : List, Output P : address {I.S : List L tidak kosong, minimal 1 elemen, elemen pertama pasti ada } {F.S : First “maju”, mungkin bernilai Nil list menjadi kosong } { Menghapus elemen pertama L , P adalah elemen pertama L sebelum penghapusan, L yang baru adalah NextL } Kamus: Algoritma : P ← FirstL FirstL ← Next FirstL {Perhatikan bahwa tetap benar jika list menjadi kosong } b. Elemen yang dihapus dicatat informasinya, dan alamat elemen yang dihapus di- dealokasi : procedure DeleteFirst InputOutput L : List, Output E: infotype {I.S : List L tidak kosong, minimal 1 elemen, elemen pertama pasti ada } {F.S : Menghapus elemen pertama L E adalah nilai elemen pertama L sebelum penghapusan, L yang baru adalah NextL } Kamus: void DeAlokasi Input P:address; { I.S. P pernah dialokasi. F.S : P=Nil} {Mengembalikan address yang pernah dialokasi. P=Nil} P : address Algoritma : P ← FirstL E ← InfoP FirstL ← Next FirstL {List kosong : FirstL menjadi Nil } Dealokasi P

IV.3.2. DeleteAfter : Penghapusan suksesor sebuah elemen :

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 13 procedure DeleteAfter Input Prec : address, Output P :address {I.S : List tidak kosong , Prec adalah elemen list , NextPrec ≠ Nil} {F.S : NextPrec, yaitu elemen beralamat P dihapus dari List. NextP=Nil} {Menghapus suksesor Prec , P adalah suksesor Prec sebelum penghapusan, NextPrec yang baru adalah suksesor dari suksesor Prec sebelum penghapusan } Kamus: Algoritma : P ← NextPrec NextPrec ← NextNextPrec NextP ← Nil; Dengan primitif ini, maka penghapusan sebuah elemen beralamat P dapat dilakukan dengan : - mencari predesesor dari P, yaitu alamat Prec - memakai DELETEAfterPrec procedure DeleteP InputOutput L:List, Output P : address {I.S : List L tidak kosong , P adalah elemen list L } {F.S : Menghapus P dari list., P mungkin elemen pertama, tengah atau terakhir } Kamus: Prec : address; { alamat predesesor P } Algoritma : { Cari predesesor P } if P = FirstL then { Delete list dengan satu elemen } DELETEFirstL,P else Prec ← FirstL while NextPrec ≠ P do Prec ← Next Prec { NextPrec = P, hapus P } DELETEAfterPrec,P

IV.3.3. DELETELast : Menghapus elemen terakhir list dapat dilakukan jika alamat dari eemen sebelum

elemen terakhir diketahui. Persoalan selanjutnya menjadi persoalan DELETEAFTER, kalau Last bukan satu-satunya elemen list linier. Ada dua kasus, yaitu list menjadi kosong atau tidak. Kasus list menjadi kosong : P Final State First Initial State First Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46 14 List tidak menjadi kosong masih mengandung elemen : procedure DeleteLast Input Fisrt : List, Output P : address {I.S : List L tidak kosong , minimal mengandung 1 elemen} {F.S : P berisi alamat elemen yang dihapus. NextP=Nil. List berkurang elemennya} { Menghapus elemen terakhir dari list., list mungkin menjadi kosong } Kamus: Last, PrecLast : address {address untuk traversal, type terdefinisi} } {pd akhirnya Last adalah alamat elemen terakhir dan PrecLast adalah alamat sebelum yg terakhir } Algoritma : { Find Last dan address sebelum last } Last ← FirstL PrecLast ← Nil { predesesor dari L tak terdefinisi } while NextLast ≠ Nil do { Traversal list sampai terakhir } PrecLast ← Last; Last ← NextLast {NextLast= Nil,Last adalah elemen terakhir; PrecLast = sebelum Last} P ← Last if PrecLast = Nil then {list dg 1 elemen, jadi kosong } FirstL ← Nil else NextPrecLast ← Nil Catatan: ƒ Operasi delete yang tidak melakukan dealokasi address, ditawarkan jika address tersebut masih dibutuhkan. Misalnya elemen yang dihapus akan dijadikan anggota elemen list lain: dalam hal ini tidak perlu melakukan dealokasi, kemudian alokasi ulang ketika akan ditambahkan ke list yang baru. Beberapa list dengan elemen sejenis seringkali harus dikelola dalam program; misalnya list mahasiswa per matakuliah. ƒ Operasi delete yang sekaligus melakukan dealokasi address, biasanya ditawarkan ke pengguna yang tidak perlu mengetahui “keberadaan” address, dan yang hanya perlu memanipulasi informasi pada field info. Last Initial State First Last First Final State P Inggriani Liem : Algoritma dan Pemrograman Prosedural Bagian II, Jurusan Teknik Informatika - ITB 8_LIST LINIER.docList Linier - 61603 9:46 15

IV.5. Konkatenasi dua buah list linier