void Del (ListPlayer *L, InfoPlayer *X, int id) /*Menghapus pemain dari ListPlayer ketika pemain sudah kalah dalam permainan */ { AddressOfPlayer Prec, P; if (!IsLPlayerEmpty(*L)) { if(NbElmtPlayer(*L) == 1) { P = First(*L); if(Info(P).id == id) { *X = Info(P); Next(P) = Nil; First(*L) = Nil; Dealokasi(&P); } } else { P = SearchidPlayer(*L, id); if(P == Nil) return; Prec = SearchPrec(*L, id); Next(Prec) = Next(P); if(First(*L) == P) First(*L) = Next(P); Next(P) = Nil; Dealokasi(&P); } /* if (id == Infoid(First(*L))) { P = First(*L); *X = Info(First(*L)); First(*L) = Next(First(*L)); Dealokasi(&P); } else { Prec = SearchPrec(*L,id); if (Infoid(Next(Prec))==id) { P = Next(Prec); Next(Prec) = Next(Next(Prec)); *X=Info(P); Dealokasi(&P); } } */ } }
void DelP(List *L, infotypeList X) /* I.S. Sembarang */ /* F.S. Jika ada elemen list beraddressList P, dengan Info(P)=X */ /* Maka P dihapus dari list dan di-dealokasi */ /* Jika tidak ada elemen list dengan Info(P)=X, maka list tetap */ /* List mungkin menjadi kosong karena penghapusan */ { addressList P = First(*L); addressList Prec = NULL; while (P != NULL && X != Info(P)) { Prec = P; P = Next(P); } if (P != NULL) { if (Prec == NULL) First(*L) = Next(P); else Next(Prec) = Next(P); Dealokasi(&P); } }
int DelP( Node *List, int value) { int type; Node Prev,P; if(*List != Nil) { if((*List)->type == value) { P = *List; *List = (*List)->next; } else { Prev = SearchPrevNode( *List, value); if(Prev != Nil) { // printf("%d",Prev->type); // system("PAUSE"); P = Prev->next; Prev->next = P->next; } } P->next = Nil; type = P->type; Dealokasi(P); } return type; }
void DelVLast(List *L,infotype *X) { /* I.S. List tidak kosong */ /* F.S. Elemen sebelum dummy dihapus nilai info disimpan pada X */ /*dan alamat elemen terakhir sebelum dummy di-dealokasi */ address P; DelLast(L,&P); (*X) = Info(P); Dealokasi(&P); }
void DelVFirst(List *L,infotype *X) { /* I.S. List L tidak kosong */ /* F.S. Elemen pertama list dihapus. nilai info disimpan pada X */ /*dan alamat elemen pertama didealokasi */ address P; DelFirst(L,&P); (*X) = Info(P); Dealokasi(&P); }
void DelVLast (List *L, infotype *X) { /* Kamus Lokal */ address P; /* Algoritma */ DelLast(L,P); (*X) = Info(P); Dealokasi(P); }
void DelVLast(List *L, infotypeList *X) /* I.S. list tidak kosong */ /* F.S. Elemen terakhir list dihapus: nilai info disimpan pada X */ /* dan alamat elemen terakhir di-dealokasi */ { addressList P; DelLast(L, &P); *X = Info(P); Dealokasi(&P); }
/*** PENGHAPUSAN ELEMEN ***/ void DelVFirst(List *L, infotypeList *X) /* I.S. List L tidak kosong */ /* F.S. Elemen pertama list dihapus: nilai info disimpan pada X */ /* dan alamat elemen pertama di-dealokasi */ { addressList P; DelFirst(L, &P); *X = Info(P); Dealokasi(&P); }
/****************** PROSES TERHADAP LIST ******************/ void DelAll (List *L) /* Delete semua elemen list dan alamat elemen di-dealokasi */ { addressList P = First(*L), Prec; while (P != NULL) { Prec = P; P = Next(P); Dealokasi(&Prec); } First(*L) = NULL; }
/* Penghapusan ELemen */ void DelVFirst (List *L, infotype *X) { /* Kamus Lokal */ address P; /* Algoritma */ P = First(*L); (*X) = Info(P); First(*L) = Next(First(*L)); Next(P) = Nil; Dealokasi(P); }
/* ----- Proses Terhadap List */ void DelAll (List *L) { /* Kamus Lokal */ address P; /* Algoritma */ P = First(*L); while (P != Nil) { First(*L) = Next(First(*L)); Next(P) = Nil; Dealokasi(P); P = First(*L); } }
void DelPrio (Queue *Q, infotype *X, int *Pr) /* Proses : Menghapus X pada bagian HEAD dari Q dan mendealokasi elemen HEAD, X berisi elemen dengan prioritas tertinggi */ /* I.S. Q tidak kosong */ /* F.S. X = nilai elemen HEAD dan Pr = nilai elemen prioritas HEAD pd I.S., HEAD "maju" */ { /* Kamus Lokal */ address Pt; /* Algoritma */ Pt=Head(*Q); *X=InfoHead(*Q); *Pr=Prio(Pt); Head(*Q)=Next(Pt); Next(Pt)=Nil; Dealokasi(Pt); }