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);
            }
        }
        */
    }
}
Ejemplo n.º 2
0
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);
    }
}
Ejemplo n.º 3
0
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;
	}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
void DelVLast (List *L, infotype *X) {
     /* Kamus Lokal */
    address P;

    /* Algoritma */
    DelLast(L,P);
    (*X) = Info(P);
    Dealokasi(P);
}
Ejemplo n.º 7
0
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);
}
Ejemplo n.º 8
0
/*** 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);
}
Ejemplo n.º 9
0
/****************** 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;
}
Ejemplo n.º 10
0
/* 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);
}
Ejemplo n.º 11
0
/* ----- 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);
    }
}
Ejemplo n.º 12
0
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);
}