1
14/03/2011
DeleteFirst DeleteFirst
Kasus Untuk List Kosong: PRIMITIF
Kondisi Awal void deleteFirstPtr(List *L,ElementPtr P);
Kasus Untuk List Kosong: tidak melakukan
ALGORITMA
apapun
Procedure deleteFirstPtr(Input/Output List L, Input Address P)
{ I.S: Terdefinisi List L tidak kosong,
Kasus Untuk List Tidak Kosong: Kondisi Awal F.S: Menghapus elemen pertama list L, dimana P adalah elemen pertama dalam List L
}
@ P<-FIRST(L)
Kasus Untuk List Tidak Kosong: Kondisi Akhir FIRST(L) <- NEXT(P)
Note : pada Tahap 2 link dari HEAD akan
Tahap 1 berpindah ke Element Kedua HEAD
@ P P
DeleteAfter DeleteAfter
• Perlu diingatkan bahwa mekanisme ini terbatas Kondisi Akhir
Note : Bila P merupakan element Kedua
pada asumsi bahwa elemnt P bukan element dari List yang ada dalam contoh
terakhir dari List
@ P Prec
P dapat berupa elemen manapun asalkan NEXT(P) tidak Nil Tahap 1 : Mencari element selanjutnya dari P dan diacu dengan Prec
Tahap 2: Mengatur NEXT P menjadi NEXT Prec
@ P
2
14/03/2011
DeleteAfter DeleteAfter
PRIMITIF
Kondisi Akhir void deleteAfterPtr(ElementPtr P,ElementPtrPrec);
Note : Bila P merupakan element Pertama ALGORITMA
dari List yang ada dalam contoh
Procedure deleteAfterPtr(Input/Output Address P, Prec)
{ I.S: Terdefinisi Element P dimana NEXT(P) tidak Nil,
F.S: Elemen NEXT(P) dihapus dari list
@ P Prec }
Prec <- NEXT(P)
NEXT(P)<-NEXT(Prec)
HEAD
Tahap 1 : Mencari element selanjutnya dari P dan diacu dengan Prec
Tahap 2: Mengatur NEXT P menjadi NEXT Prec P Prec
DeleteAfter DeleteLast
Kode C
void deleteAfterPtr(ElementPtr P, ElementPtr Prec){ • Penghapusan element terakhir pada sebuah list
Prec <- NEXT(P) • Kondisi yang perlu diperhatikan
NEXT(P)<-NEXT(Prec)
▫ List 1 Elemen = gunakan deleteFirst
HEAD ▫ List > 1 elemen= gunakan deleteAfter
• Proses:
▫ Mencari elemen terakhir dari list diacu oleh P dan
P Prec
Prev adalah satu elemen sebelum elemen akhir
▫ Bila list 1 elemen maka Prev adalah Nil
DeleteLast DeleteLast
PRIMITIF
P dapat berupa elemen void deleteLastPtr(List *L, ElementPtr P);
Terakhir dari List, dan list ALGORITMA
Procedure deleteLastPtr(Input/Output List L,Address P)
P terdiri atas 1 element maka
@ { I.S: Terdefinisi List L dimana P adalah element Terakhir
kita gunakan deleteFirst F.S: Element List L berkurang 1 yaitu pada element terakhir
}
Kamus Lokal : Address Prev
P <-FIRST(L)
@ Prev P Prev <-Nill
/{lakukan iterasi}
While NEXT(P)<>Nil
P dapat berupa elemen Terakhir dari List, dan list terdiri atas >1 element Prev<-P
maka kita gunakan deleteAfter P <-NEXT(P)
Untuk melakukan penghapusan element terakhir maka kita perlu berhenti 1 IF Prev = Nil {List 1 element}
elemen sebelum elemen terakhir sehingga kondisi traversal menjadi while deleteFirst(L,P)
(Next(Next(Element))<>Nil atau kita tambahkan sebuah element ELSE
penyimpan element sebelum element terakhir (Prev) deleteAfter(Prev,P)
3
14/03/2011
DeleteLast DeleteElement
KODE C
void deleteLastPtr(List *L, ElementPtr P){
• Menghapus sebuah Element P yang telah
ElementPtrPrev; diketahui menjadi element dari List namun
P =FIRST(L); posisi belum diketahui
Prev =NULL;
/{lakukan iterasi} • Ide:
While (NEXT(P)!=NULL) ▫ Mencari posisi P dalam List, kita berhenti 1
Prev=P; element sebelum P yang diacu oleh tmp
P =NEXT(P);
if (Prev == NULL) {List 1 element} ▫ Kondisi traversal yang digunakan
deleteFirstPtr(L,P); while NEXT(tmp)<>P
else
deleteAfterPtr(Prev,P);
DeleteElement DeleteElement
KODE C
Kita tahu P ada dalam list namun tidak
void deleteElementPtr(List *L, ElementPtr P){
tau lokasi pastinya. Bila List 1 element
P maka gunakan DeleteFirst ElementPtr Prev;
@
if (P==FIRST(L))
deleteFirstPtr(L,P);
else{
Prev=FIRST(L);
@ Prev P
While(NEXT(Prev)!=P)
Prev=(NEXT(Prev));
P merupakan element dalam list L yang lokasinya belum diketahui deleteAfterPtr(Prev,P);
apakah di awal, tengah atau akhir. Untuk penghapusan maka kita harus }
menemukan Posisi sebelum P dan menggunakan deleter After
Pencarian traversal dengan aturan berhenti: while (Next(Prev)<>P
DeleteElement Latihan
PRIMITIF
void deleteElementPtr(List *L, ElementPtr P); • Bagaimana bila kita ingin mengupdate informasi
ILUSTRASI
sebuah element List, dimana ada 2
ALGORITMA
Procedure deleteElementPtr(Input/Output List L,Address P)
kemungkinan:
{ I.S: Terdefinisi List L dimana P adalah element dari List ▫ 1 Kita sudah mengetahui Alamat Element
F.S: Element List L berkurang 1 yaitu pada element P
} ▫ 2. Kita hanya mengetahui info awal element saja
Kamus Lokal : Address Prev
IF P=FIRST(L) • Misalkan pada kasus List Mahasiswa adalah
deleteFirstPtr(L,P)
ELSE
proses mengupdate Nilai dimana diketahui Nim
Prev <-FIRST(L) mahasiswa yang bersangkutan
{lakukan iterasi mencari 1 element sebelum P}
While NEXT(Prev)<>P
Prev<-NEXT(Prev)
deleteAfterPtr(Prev,P)