Queue

Eleman eklemenin sondan, eleman çıkarmanın ise baştan gerçekleştiği, FIFO (First In First Out) mantığındaki linear (doğrusal) veri yapısıdır. Queue’daki ilk elemanın index’ine front, son elemanın index’ine ise rear denir. Boş bir queue veri yapısında front ve rear’ın değeri -1‘dir.

Bir queue’ya eleman ekleme işlemine enqueue, eleman silme işlemine ise dequeue denir. Bu işlemlerin kontrolü front ve rear ile gerçekleştirilir.

Eleman Ekleme Enqueue()

Eleman her zaman sondan eklenir.

Queue’ya bir eleman eklemek istediğimizde öncelikle dolu olup olmama durumu kontrol edilir. Queue doluysa ekleme işlemi yapılmayacaktır. Dolu değilse Öncelikle front’un değeri kontrol edilmelidir. Eğer değeri -1 ise front 1 arttırılmalıdır. Bu kontrolden sonra rear’ın değeri 1 arttırılıp, queue’nin rear’ıncı index’ine eleman eklenecektir.

void enqueue(int number) {
    if(rear == QUEUE_SIZE - 1) {
        printf("Queue Dolu!");
    } else {
        if(front == -1) {
            front++;
        }
        rear++;
        My_Queue[rear] = number;
    }
}
Eleman Silme Dequeue()

Her zaman Queue’da eleman baştan silinir. Yani queue’nin front’uncu elemanı silinir.

Öncelikle Queue’nin boş olup olmadığı kontrol edilir. Eğer boşsa queue’dan eleman silinmez. Değilse Queue’nin front’uncu elemanına NULL değeri atanır ve front’un değeri 1 arttırılır.

void dequeue(int number) {
    if(front == -1) {
        printf("Silinecek eleman yok!");
    } else {
        My_Queue[front] = NULL;
        front++;
    }
}

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir