示例#1
0
void Del (Queue *Q, infotype *X)
/* Proses: Menghapus elemen pertama pada Q dengan aturan FIFO */
/* I.S. Q tidak kosong */
/* F.S. X = nilai elemen HEAD pada I.S.,
       Jika Queue masih isi : HEAD diset tetap = 1, elemen-elemen setelah HEAD yang
       lama digeser ke "kiri", TAIL = TAIL – 1;        Jika Queue menjadi kosong, HEAD = TAIL = Nil. */
{
    //kamus
    int i;
    //algoritma
    (*X)=InfoHead(*Q);
    if (Head(*Q)==Tail(*Q))
    {
        Head(*Q) = Nil;
        Tail(*Q) = Nil;
    }
    else
    {
        i=Head(*Q);
        do
        {
            (*Q).T[i]=(*Q).T[i+1];
            i++;
        }while(i!=Tail(*Q));
        Tail(*Q)--;
    }
}
void Del (Queue * Q, infotype * X) {
	/*Algoritma*/
	(*X) = InfoHead(*Q);
	Head(*Q) +=1;
	if (Head(*Q) > Tail(*Q)) {
		Tail(*Q) = Nil;
		Head(*Q) = Nil;
	}
}
示例#3
0
void Del (Queue *Q,infotype *X)
{
	(*X) = InfoHead(*Q);
	if (Head(*Q) == Tail(*Q))	{
		Head(*Q) = Nil;
		Tail(*Q) = Nil;
	}
	else {
		Head(*Q)++;
		if (Head(*Q) == maxEl(*Q) + 1) Head(*Q) = 1;
	}
}
示例#4
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);
}
示例#5
0
void Del (Queue *Q,infotype *X)
/* Proses  Menghapus elemen pertama pada Q dengan aturan FIFO */
/* I.S. Q tidak kosong */
/* F.S. X = nilai elemen HEAD pada I.S.,
Jika Queue masih isi  HEAD "maju".
Jika HEAD baru menjadi MaxEl + 1, maka HEAD diset = 1;
Jika Queue menjadi kosong, HEAD = TAIL = Nil. */
{
	/*kamus lokal*/

	/*algoritma*/  
		(*X) = InfoHead(*Q);
		if (Head(*Q) == Tail(*Q))	{
			Head(*Q) = Nil;
			Tail(*Q) = Nil;
		}
		else {	
			Head(*Q)++;
			if (Head(*Q) == MaxEl(*Q) + 1) Head(*Q) = 1;
		}
}
示例#6
0
void Del(Queue *Q, infotypeQueue *X)
/* Proses: Menghapus X pada Q dengan aturan FIFO */
/* I.S. Q tidak mungkin kosong */
/* F.S. X = nilai elemen HEAD pd I.S., HEAD "maju" dengan mekanisme circular buffer; 
        Q mungkin kosong */
{
    *X = InfoHead(*Q);

    if (Head(*Q) == Tail(*Q))
    {
        Head(*Q) = 0;
        Tail(*Q) = 0;
    }
    else if (Head(*Q) == MaxEl(*Q))
    {
        Head(*Q) = 1;
    }
    else
    {
        ++Head(*Q);
    }
}
示例#7
0
void Del(Queue *Q, infotype_dadu *X)
/* Menghapus elemen pertama pada Q */
/* I.S. Q tidak kosong */
/* F.S. X = nilai elemen HEAD pada I.S., */
/*      JIka Queue masih isim HEAD diset tetap = 1, elemen-elemen setelah HEAD YANG */
/*      lama digeser ke "kiri", TAIL = TAIL - 1 */
/*      Jika Queue menjadi kosog, HEAD = TAIL = Nil */
{
    int i;
    *X = InfoHead(*Q);
    if (Head(*Q) == Tail(*Q))
    {
        Head(*Q) = Nil;
        Tail(*Q) = Nil;
    }
    else
    {
        for (i = 1; i < Tail(*Q); i++)
        {
            *((*Q).T+i) = *((*Q).T+i+1);
        }
        Tail(*Q) = Tail(*Q) - 1;
    }
}