Bu yazımızda veri yapıları derslerinin önemli bir konusu olan kuyruk, yani queue veri yapısı konusundan bahsedeceğiz.

Kuyruk (Queue) Veri Yapısı Nedir ?

Queue (kuyruk) veri yapısı, FIFO (first in first out – ilk giren ilk çıkar) prensibine göre işleyen bir veri yapısıdır. Yani, queue veri yapısında, ilk eklenen veri, ilk çıkarılacak veri olacaktır.

Queue veri yapısının özellikleri şunlardır:

  1. Queue veri yapısı, verileri sıralı bir şekilde saklar.
  2. Queue veri yapısında, verilere sadece bir yönden erişilebilir. Bu yönde veriler eklenir ve bu yönden de veriler çıkarılır.
  3. Queue veri yapısında, verilere sadece sona ekleme işlemi (enqueue) ve sadece baştan çıkarma işlemi (dequeue) yapabiliriz.
  4. Queue veri yapısında, veriler sıralı bir şekilde tutulduğu için, veriler arasında arama işlemi yapılamaz.

Queue veri yapısını, çeşitli uygulamalarda kullanabiliriz. Örneğin, bir bilgisayar sisteminde, işlemlerin yapılacağı sırayı belirleyebilmek için queue veri yapısı kullanılabilir.

Kuyruk Veri Yapısı Avantajları

Queue veri yapısını kullanmanın birçok avantajı vardır. Bunlardan bazıları :

  • Queue veri yapısı, FIFO prensibine göre işleyen bir veri yapısıdır. Bu prensip sayesinde, queue veri yapısında verilere sadece bir yönden erişilebilir ve bu yönden veriler eklenir ve çıkarılır. Bu özellik sayesinde, queue veri yapısı kullanımı kolaydır.
  • Queue veri yapısı, verileri sıralı bir şekilde tutar. Bu özellik sayesinde, queue veri yapısında verilere sırayla erişilebilir. Bu özellik, örneğin bir bilgisayar sisteminde, işlemlerin sırayla yapılmasını sağlar.
  • Queue veri yapısı, verilere sadece sona ekleme ve sadece baştan çıkarma işlemlerini destekler. Bu özellik duruma göre, queue veri yapısının kullanımını kolaylaştırır.
Bu yazı dikkatini çekebilir.   Sıralama Algoritmaları – Merge Sort (Birleştirme Sıralaması) Algoritması

Kuyruk Veri Yapısı Dezavantajları

Queue veri yapısını kullanmanın birçok avantajı olsada bazı dezavantajlarıda vardır. Bunlardan bazıları :

  • Queue veri yapısında, veriler sıralı bir şekilde tutulduğu için, veriler arasında arama işlemi yapılamaz.
  • Queue veri yapısı, verilere sadece sona ekleme ve sadece baştan çıkarma işlemlerini destekler. Bu özellik sayesinde, queue veri yapısında verilere ortaya veya araya ekleme işlemi yapılamaz.
  • Queue veri yapısı, verilere sadece bir yönden erişilebilir.

Kuyruk (Queue) Veri Yapısı Örnek

Burada örnek olması açısından C progrmlama dilini kullandık. Sizler farklı dillerde de aynı yapıyı kurabilirsiniz.

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 10

struct queue {
  int items[MAX_SIZE];
  int front;
  int rear;
};

struct queue* createQueue();
void enqueue(struct queue* q, int);
int dequeue(struct queue* q);
void printQueue(struct queue* q);
int isFull(struct queue* q);
int isEmpty(struct queue* q);

int main() {
  struct queue* q = createQueue();

  enqueue(q, 1);
  enqueue(q, 2);
  enqueue(q, 3);
  enqueue(q, 4);
  enqueue(q, 5);

  printf("Orjinal Kuyruk: ");
  printQueue(q);

  dequeue(q);
  dequeue(q);

  printf("\nİlk 2 eleman çıkarıldıktan sonra: ");
  printQueue(q);

  return 0;
}

// Kuyruk yaratma fonksiyonu
struct queue* createQueue() {
  struct queue* q = malloc(sizeof(struct queue));
  q->front = -1;
  q->rear = -1;
  return q;
}

// Kuyruğa eleman ekleme fonksiyonu
void enqueue(struct queue* q, int value) {
  if(isFull(q)) {
    printf("Kuyruk dolu!\n");
  } else {
    if(q->front == -1) {
      q->front = 0;
    }
    q->rear++;
    q->items[q->rear] = value;
    printf("%d kuyruğa eklendi\n", value);
  }
}

// Kuyruktan eleman çıkarma fonksiyonu
int dequeue(struct queue* q) {
  if(isEmpty(q)) {
    printf("Kuyruk boş!\n");
    return -1;
  } else {
    int item = q->items[q->front];
    q->front++;
    if(q->front > q->rear) {
      q->front = q->rear = -1;
    }
    return item;
  }
}

Bu yazımızda kuyruk, yani queue veri yapısından bahsettik. Diğer veri yapıları yazılarımızın tümüne ulaşmak için buraya tıklayabilirsiniz.