IF2030_Proc_09_VariasiListLinier_bgn2

S sembarang fs terbentuk list l kosong dengan satu

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: L) /* I.S. sembarang */ /* F.S. Terbentuk list L kosong, dengan satu elemen dummy, F.S. Terbentuk list kosong, dengan satu elemen dummy, jika alokasi dummy berhasil */ /* Jika gagal maka First = Last = Nil dan list gagal terbentuk */ { /* Kamus Lokal */ address Pdummy; Pdummy; /* Algoritma */ Pdummy = (address) malloc (sizeof(ElmtList)); if (Pdummy != Nil) { (Pdummy Nil) Next(Pdummy) = Nil; /* Info(P) tidak didefinisikan */ First(*L) = Pdummy; Last(*L) = Pdummy; } else /* List gagal terbentuk */ { else List gagal terbentuk First(*L) = Nil; Last(*L) = Nil; } } 11/02/11 IF2030/Sem. 1 2011-2012 11 Beberapa primitif address Search (List L, infotype X) /* Mencari apakah ada elemen list dengan info(P)= X */ /* Jika ada, mengirimkan address elemen tersebut. */ /* Jika tidak ada, mengirimkan Nil */ { /* Kamus Lokal */ address Pt; /* Algoritma */ if (ListEmpty(L)) { return Nil; } else /* list tidak kosong */ { Info(Last(L)) = X; /* letakkan sentinel */ Pt = First(L); while (Info(Pt) != X) { Pt = Next(Pt); } /* Info(Pt) = X */ if (Pt != Last(L)) { /* tidak ketemu di sentinel */ return Pt; } else /* Pt = Last(L), ketemu di sentinel */ { return Nil; } } 11/02/11 IF2030/Sem. 1 2011-2012 } 12 Beberapa primitif Beberapa primitif void InsertFirst (List * L, address P) /* I.S. Sembarang, P sudah dialokasi */ /* F.S. Menambahkan elemen ber-address P sebagai elemen pertama */ { /* Kamus Lokal */ /* Algoritma */ Next(P) = First(*L); First(*L) = P; } 11/02/11 IF2030/Sem. 1 2011-2012 13 Beberapa primitif Beberapa primitif void InsertLast (List * L, address P) /* I.S. Sembarang, P sudah dialokasi */ /* F.S. P ditambahkan sebagai elemen terakhir yang baru */ { /* Kamus Lokal */ address last; /* Algoritma */ if (ListEmpty(*L)) { InsertFirst(L,P); } else { last = First(*L); while (Next(last) != Last(*L)) { last = Next(last); } /* Next(last) == Last(*L) alias dummy */ InsertAfter(L,P,last); } } 11/02/11 IF2030/Sem. 1 2011-2012 14 Beberapa primitif Beberapa primitif void DeleteFirst (List * L, address * P) /* I.S. L...
View Full Document

Ask a homework question - tutors are online