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; } }
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; } }
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); }
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; } }
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); } }
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; } }