Pertemuan 9 (Enqueue/Antrean)

Tidak ada komentar
Berikan gambaran/ilustrasi dari kasus antrian berikut :
a)       Diketahui suatu antrian/queue dengan max = 6
#define MAX 6
typedef struct {
                                int data[MAX]
                                int head;
                                int tail;
                } Queue;
Queue Antrian;






         0               1              2                3                4               5               Max = 6
head = -1
tail = -1

b)      Lakukan Enqueue 4 elemen ke dalam antrian, dimanakah posisi head dan tail?
void Enqueue(int data) {
         if(IsEmpty()==1) {
                          antrian.head=antrian.tail=0;
                          antrian.data[antrian.tail]=data;
                          printf(“%d masuk!”,antrian.data[antrian.tail);
} else
         if(IsFull()==0) {
                          antrian.tal++;
                          antrian.data[antrian.tail]=data;
                          printf(“% masuk!”,antrian.data[antrian.tail]);
         }
}



7
48
4
11




0                1               2               3                 4             5              Max = 6
head = 0                   tail = 2      tail = 3           Enqueue(11)

c)       Kemudian lakukan Dequeue 2 elemen dari antrean, maka dimana posisi head dan tail?
int Dequeu() {
          int I;
          int e = antrian.data[antrian.head];
          for(i=antrian.head;i<=antrian.tail-1;i++) {
                                    antrian.data[i] = antrian.data[i+1];
          }
          antrian.tail--;
          return e;
}
4
11






            0                   1                   2                  3                   4                    5
head = 0    tail = 1                                                                             Max = 6    Maju semua tail—
d)      Dari keadaan diatas, bagaimanakah kondisi IsFull dan IsEmpty nya?

Kondidi IsFull
int IsFull() {
if(antrian.tail==max-1)
return 1;
else
return 0;
}

7
48
4
11
14
10



0                1                   2                   3                  4                   5
head = 0                                                                                  tail = 5             Max = 6
antrean penuh karena head = 0 tail = max -1

Konsisi IsEmpty
int IsEmpty()
{
if(antrian.tail==-1)
return 1;
else
return 0;


7
48
4
11
14
10
}

            0                   1                    2                  3                  4                    5
head = -1                                                                                                    Max = 6
tail = -1
antrena kosong karena tail = -1

Tidak ada komentar :

Posting Komentar