void Add(Queue *Q, infotype_dadu X) /* Menambahkan X sebagai elemen Queue Q */ /* I.S. Q mungkin kosong, tabel penampung elemen Q tidak penuh */ /* F.S. X menjadi TAIL yang baru, TAIL "maju" */ { if (IsEmpty(*Q)) { Head(*Q) = 1; } Tail(*Q)++; InfoTail(*Q) = X; }
/* *** Operator-Operator Dasar Queue *** */ void Add (Queue *Q, infotype X) /* Proses : Menambahkan X pada Q dengan aturan FIFO */ /* I.S. Q mungkin kosong, tabel penampung elemen Q TIDAK penuh */ /* F.S. X menjadi TAIL yang baru, TAIL "maju" */ { if(IsEmpty(*Q)) { Head(*Q)=1; } Tail(*Q)++; InfoTail(*Q)=X; }
void Add (Queue *Q,infotype X) { if (IsEmpty(*Q)) { Tail(*Q) = 1; Head(*Q) = 1; } else { Tail(*Q) += 1; if (Tail(*Q) == (*Q).MaxEl + 1) Tail(*Q) = 1; } InfoTail(*Q) = X; }
void Add (Queue * Q, infotype X) { /*Kamus Lokal*/ int i; /*Algoritma*/ if (IsEmpty(*Q)) { Head(*Q) = 1; Tail(*Q) = 1; } else { Tail(*Q)+=1; if (Tail(*Q) > (*Q).MaxEl) { for (i = Head(*Q); i<Tail(*Q); i++) { (*Q).T[i-Head(*Q)+1] = (*Q).T[i]; } Tail(*Q) = 1+(Tail(*Q)-Head(*Q)); Head(*Q) = 1; } } InfoTail(*Q) = X; }
/* *** Primitif Add/Delete *** */ void Add(Queue *Q, infotypeQueue X) /* Proses: Menambahkan X pada Q dengan aturan FIFO */ /* I.S. Q mungkin kosong, tabel penampung elemen Q TIDAK penuh */ /* F.S. X menjadi TAIL yang baru, TAIL "maju" dengan mekanisme circular buffer */ { if (IsEmptyQueue(*Q)) { Head(*Q) = 1; Tail(*Q) = 1; } else if (Tail(*Q) == MaxEl(*Q)) { Tail(*Q) = 1; } else { ++Tail(*Q); } InfoTail(*Q) = X; }
void Add (Queue *Q,infotype X) /* Proses Menambahkan X pada Q dengan aturan FIFO */ /* I.S. Q mungkin kosong, tabel penampung elemen Q TIDAK penuh */ /* F.S. X menjadi TAIL yang baru, TAIL "maju". */ /* Jika TAIL baru = MaxEl + 1, maka TAIL diset = 1. */ { /*kamus lokal*/ /*algoritma*/ if (IsEmpty(*Q)) { Tail(*Q) = 1; Head(*Q) = 1; } else { Tail(*Q) += 1; if (Tail(*Q) == (*Q).MaxEl + 1) Tail(*Q) = 1; } InfoTail(*Q) = X; }