{"id":39150,"date":"2026-02-15T13:40:42","date_gmt":"2026-02-15T10:40:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39150"},"modified":"2026-02-15T13:40:42","modified_gmt":"2026-02-15T10:40:42","slug":"c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/","title":{"rendered":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)"},"content":{"rendered":"<p><body><\/p>\n<h2>C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)<\/h2>\n<p>Kuyruk (Queue), bilgisayar bilimlerinde ve yaz\u0131l\u0131m m\u00fchendisli\u011finde s\u0131k\u00e7a kullan\u0131lan temel bir do\u011frusal veri yap\u0131s\u0131d\u0131r. Ger\u00e7ek d\u00fcnyadaki kuyruklar gibi, bu veri yap\u0131s\u0131 da &#8220;ilk giren ilk \u00e7\u0131kar&#8221; (First-In, First-Out &#8211; FIFO) prensibiyle \u00e7al\u0131\u015f\u0131r. Yani, bir kuyru\u011fa ilk eklenen eleman, kuyruktan ilk \u00e7\u0131kar\u0131lan eleman olacakt\u0131r. Bu makale, C dilinde kuyruklar\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131, farkl\u0131 uygulama y\u00f6ntemlerini (dizi tabanl\u0131 ve ba\u011fl\u0131 liste tabanl\u0131) ve her bir y\u00f6ntemin avantajlar\u0131 ile dezavantajlar\u0131n\u0131 detayl\u0131 kod \u00f6rnekleriyle a\u00e7\u0131klamaktad\u0131r.<\/p>\n<h3>Kuyruk Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Kuyruk, elemanlar\u0131n bir ucundan (arka &#8211; rear\/tail) eklendi\u011fi ve di\u011fer ucundan (\u00f6n &#8211; front\/head) \u00e7\u0131kar\u0131ld\u0131\u011f\u0131 bir veri yap\u0131s\u0131d\u0131r. Bu FIFO prensibi, bir\u00e7ok ger\u00e7ek d\u00fcnya senaryosunu modellemek i\u00e7in idealdir:<\/p>\n<p>*   <strong>\u0130\u015fletim Sistemleri:<\/strong> G\u00f6rev zamanlay\u0131c\u0131lar, yazd\u0131rma kuyruklar\u0131, disk eri\u015fim istekleri.<br \/>\n*   <strong>A\u011f \u0130leti\u015fimi:<\/strong> Y\u00f6nlendiricilerde (router) paket tamponlar\u0131.<br \/>\n*   <strong>Sim\u00fclasyonlar:<\/strong> M\u00fc\u015fteri hizmetleri kuyruklar\u0131, \u00fcretim hatt\u0131 s\u00fcre\u00e7leri.<br \/>\n*   <strong>Algoritmalar:<\/strong> Geni\u015flik \u00d6ncelikli Arama (BFS) gibi grafik algoritmalar\u0131.<\/p>\n<p>Kuyruklar, sistemlerdeki i\u015f y\u00fck\u00fcn\u00fc y\u00f6netmek, olaylar\u0131 s\u0131ralamak ve kaynaklar\u0131 verimli bir \u015fekilde kullanmak i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>Temel Kuyruk \u0130\u015flemleri<\/h3>\n<p>Bir kuyruk veri yap\u0131s\u0131n\u0131n temel olarak desteklemesi gereken i\u015flemler \u015funlard\u0131r:<\/p>\n<p>*   <strong><code>enqueue<\/code> (Ekleme):<\/strong> Kuyru\u011fun arkas\u0131na yeni bir eleman ekler.<br \/>\n*   <strong><code>dequeue<\/code> (\u00c7\u0131karma):<\/strong> Kuyru\u011fun \u00f6n\u00fcndeki eleman\u0131 \u00e7\u0131kar\u0131r ve d\u00f6nd\u00fcr\u00fcr. Kuyruk bo\u015fsa bir hata durumu bildirmelidir.<br \/>\n*   <strong><code>front<\/code> \/ <code>peek<\/code> (\u00d6ndeki Eleman\u0131 G\u00f6rme):<\/strong> Kuyru\u011fun \u00f6n\u00fcndeki eleman\u0131, onu \u00e7\u0131karmadan d\u00f6nd\u00fcr\u00fcr. Kuyruk bo\u015fsa bir hata durumu bildirmelidir.<br \/>\n*   <strong><code>isEmpty<\/code> (Bo\u015f mu?):<\/strong> Kuyru\u011fun bo\u015f olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. Bo\u015fsa <code>true<\/code>, de\u011filse <code>false<\/code> d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <strong><code>isFull<\/code> (Dolu mu?):<\/strong> Kuyru\u011fun dolu olup olmad\u0131\u011f\u0131n\u0131 kontrol eder (genellikle dizi tabanl\u0131 uygulamalar i\u00e7in ge\u00e7erlidir). Doluysa <code>true<\/code>, de\u011filse <code>false<\/code> d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <strong><code>size<\/code> (Boyut):<\/strong> Kuyruktaki eleman say\u0131s\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h3>Kuyruk Uygulama Y\u00f6ntemleri<\/h3>\n<p>C dilinde kuyruklar\u0131 uygulamak i\u00e7in iki ana y\u00f6ntem vard\u0131r:<\/p>\n<p>1.  Dizi (Array) Kullanarak Kuyruk<br \/>\n2.  Ba\u011fl\u0131 Liste (Linked List) Kullanarak Kuyruk<\/p>\n<p>Her iki y\u00f6ntemin de kendine g\u00f6re avantajlar\u0131 ve dezavantajlar\u0131 bulunmaktad\u0131r.<\/p>\n<h4>Dizi (Array) Kullanarak Kuyruk<\/h4>\n<p>Dizi tabanl\u0131 kuyruk uygulamas\u0131, bellekte ard\u0131\u015f\u0131k bir blok kullanarak kuyruk elemanlar\u0131n\u0131 depolar. Bu y\u00f6ntem basittir ve bellek eri\u015fimi genellikle daha h\u0131zl\u0131d\u0131r (\u00f6nbellek performans\u0131 a\u00e7\u0131s\u0131ndan). Ancak, dizinin boyutu sabit oldu\u011fundan, kuyru\u011fun kapasitesi de sabittir.<\/p>\n<h5>Dizi Tabanl\u0131 Kuyru\u011fun Dezavantajlar\u0131:<\/h5>\n<p>*   <strong>Sabit Boyut:<\/strong> Kuyruk, tan\u0131mland\u0131\u011f\u0131 maksimum boyutu a\u015famaz.<br \/>\n*   <strong>Verimsiz Alan Kullan\u0131m\u0131 (&#8220;Kayd\u0131rma&#8221; Sorunu):<\/strong> <code>dequeue<\/code> i\u015flemi yap\u0131ld\u0131\u011f\u0131nda, kuyru\u011fun \u00f6n\u00fcndeki eleman \u00e7\u0131kar\u0131l\u0131r. Geri kalan elemanlar dizinin ba\u015f\u0131na kayd\u0131r\u0131lmazsa (ki bu pahal\u0131 bir i\u015flemdir), dizinin ba\u015f\u0131nda bo\u015fluklar olu\u015fur. Bu bo\u015fluklar, kuyru\u011fun kapasitesi dolu g\u00f6r\u00fcnse bile ger\u00e7ekte hala yer varken <code>enqueue<\/code> i\u015flemine izin vermeyebilir. Bu sorunu \u00e7\u00f6zmek i\u00e7in &#8220;dairesel kuyruk&#8221; (circular queue) kavram\u0131 geli\u015ftirilmi\u015ftir.<\/p>\n<h5>Dizi Tabanl\u0131 Kuyruk Yap\u0131s\u0131 (Basit Uygulama)<\/h5>\n<pre><code class=\"language-c\">#include <stdio.h>\n#include <stdlib.h>\n#include <limits.h> \/\/ INT_MIN i\u00e7in\n\n\/\/ Kuyruk yap\u0131s\u0131 tan\u0131m\u0131\nstruct Queue {\n    int front, rear, size;\n    unsigned capacity;\n    int* array;\n};\n\n\/\/ Yeni bir kuyruk olu\u015fturur. Kapasite ile ba\u015flat\u0131l\u0131r.\nstruct Queue* createQueue(unsigned capacity) {\n    struct Queue<em> queue = (struct Queue<\/em>) malloc(sizeof(struct Queue));\n    if (!queue) {\n        perror(\"Bellek ay\u0131rma hatas\u0131\");\n        exit(EXIT_FAILURE);\n    }\n    queue->capacity = capacity;\n    queue->front = 0; \/\/ \u0130lk eleman\u0131n indeksi\n    queue->size = 0;\n    queue->rear = capacity - 1; \/\/ Son eleman\u0131n eklenece\u011fi yer (dairesel kuyruk mant\u0131\u011f\u0131na yak\u0131n ba\u015flang\u0131\u00e7)\n    queue->array = (int<em>) malloc(queue->capacity <\/em> sizeof(int));\n    if (!queue->array) {\n        perror(\"Dizi i\u00e7in bellek ay\u0131rma hatas\u0131\");\n        free(queue);\n        exit(EXIT_FAILURE);\n    }\n    printf(\"Kuyruk %d kapasite ile olu\u015fturuldu.\\n\", capacity);\n    return queue;\n}\n\n\/\/ Kuyru\u011fun dolu olup olmad\u0131\u011f\u0131n\u0131 kontrol eder\nint isFull(struct Queue* queue) {\n    return (queue->size == queue->capacity);\n}\n\n\/\/ Kuyru\u011fun bo\u015f olup olmad\u0131\u011f\u0131n\u0131 kontrol eder\nint isEmpty(struct Queue* queue) {\n    return (queue->size == 0);\n}\n\n\/\/ Kuyru\u011fa eleman ekler (enqueue)\nvoid enqueue(struct Queue* queue, int item) {\n    if (isFull(queue)) {\n        printf(\"Kuyruk dolu! %d eklenemedi.\\n\", item);\n        return;\n    }\n    \/\/ Dairesel kuyruk mant\u0131\u011f\u0131: rear'\u0131 bir sonraki bo\u015f konuma ta\u015f\u0131r\n    queue->rear = (queue->rear + 1) % queue->capacity;\n    queue->array[queue->rear] = item;\n    queue->size++;\n    printf(\"%d kuyru\u011fa eklendi.\\n\", item);\n}\n\n\/\/ Kuyruktan eleman \u00e7\u0131kar\u0131r (dequeue)\nint dequeue(struct Queue* queue) {\n    if (isEmpty(queue)) {\n        printf(\"Kuyruk bo\u015f! \u00c7\u0131kar\u0131lacak eleman yok.\\n\");\n        return INT_MIN; \/\/ Hata durumunu belirtmek i\u00e7in\n    }\n    int item = queue->array[queue->front];\n    \/\/ Dairesel kuyruk mant\u0131\u011f\u0131: front'\u0131 bir sonraki elemana ta\u015f\u0131r\n    queue->front = (queue->front + 1) % queue->capacity;\n    queue->size--;\n    printf(\"%d kuyruktan \u00e7\u0131kar\u0131ld\u0131.\\n\", item);\n    return item;\n}\n\n\/\/ Kuyru\u011fun \u00f6n\u00fcndeki eleman\u0131 d\u00f6nd\u00fcr\u00fcr (peek\/front)\nint front(struct Queue* queue) {\n    if (isEmpty(queue)) {\n        printf(\"Kuyruk bo\u015f! \u00d6ndeki eleman yok.\\n\");\n        return INT_MIN;\n    }\n    return queue->array[queue->front];\n}\n\n\/\/ Kuyru\u011fun arkas\u0131ndaki eleman\u0131 d\u00f6nd\u00fcr\u00fcr (rear)\nint rear(struct Queue* queue) {\n    if (isEmpty(queue)) {\n        printf(\"Kuyruk bo\u015f! Arkadaki eleman yok.\\n\");\n        return INT_MIN;\n    }\n    return queue->array[queue->rear];\n}\n\n\/\/ Kuyru\u011fu temizler ve belle\u011fi serbest b\u0131rak\u0131r\nvoid destroyQueue(struct Queue* queue) {\n    if (queue) {\n        free(queue->array);\n        free(queue);\n        printf(\"Kuyruk bellekten temizlendi.\\n\");\n    }\n}\n\n\/\/ Ana fonksiyon: Dizi tabanl\u0131 kuyruk kullan\u0131m\u0131\nint main_array_queue() {\n    struct Queue* queue = createQueue(10);\n\n    enqueue(queue, 10);\n    enqueue(queue, 20);\n    enqueue(queue, 30);\n    enqueue(queue, 40);\n\n    printf(\"Kuyru\u011fun \u00f6n\u00fcndeki eleman: %d\\n\", front(queue));\n    printf(\"Kuyru\u011fun arkas\u0131ndaki eleman: %d\\n\", rear(queue));\n\n    dequeue(queue); \/\/ 10 \u00e7\u0131kar\u0131lacak\n    dequeue(queue); \/\/ 20 \u00e7\u0131kar\u0131lacak\n\n    printf(\"Kuyru\u011fun \u00f6n\u00fcndeki eleman (dequeue sonras\u0131): %d\\n\", front(queue));\n    printf(\"Kuyru\u011fun arkas\u0131ndaki eleman (dequeue sonras\u0131): %d\\n\", rear(queue));\n\n    enqueue(queue, 50);\n    enqueue(queue, 60);\n\n    printf(\"Kuyru\u011fun \u00f6n\u00fcndeki eleman: %d\\n\", front(queue));\n    printf(\"Kuyru\u011fun arkas\u0131ndaki eleman: %d\\n\", rear(queue));\n\n    \/\/ Kuyru\u011fu doldural\u0131m\n    enqueue(queue, 70);\n    enqueue(queue, 80);\n    enqueue(queue, 90);\n    enqueue(queue, 100);\n    enqueue(queue, 110); \/\/ Kapasite 10, 8 eleman var\n    enqueue(queue, 120); \/\/ Kapasite 10, 9 eleman var\n    enqueue(queue, 130); \/\/ Kapasite 10, 10 eleman var\n    enqueue(queue, 140); \/\/ Kuyruk dolu, eklenemeyecek\n\n    \/\/ Kuyruktaki t\u00fcm elemanlar\u0131 \u00e7\u0131karal\u0131m\n    while (!isEmpty(queue)) {\n        dequeue(queue);\n    }\n    dequeue(queue); \/\/ Kuyruk bo\u015f, hata mesaj\u0131 verecek\n\n    destroyQueue(queue);\n    return 0;\n}<\/code><\/pre>\n<p>Yukar\u0131daki kod \u00f6rne\u011fi, asl\u0131nda dairesel kuyruk mant\u0131\u011f\u0131n\u0131 kullanarak dizi tabanl\u0131 kuyru\u011fun &#8220;kayd\u0131rma&#8221; sorununu \u00e7\u00f6zmektedir. <code>front<\/code> ve <code>rear<\/code> i\u015faret\u00e7ileri dizinin sonuna ula\u015ft\u0131\u011f\u0131nda ba\u015fa d\u00f6nerler (<code>% queue->capacity<\/code> operat\u00f6r\u00fc sayesinde). Bu, dizinin tamam\u0131n\u0131 verimli bir \u015fekilde kullanmay\u0131 sa\u011flar.<\/p>\n<h5>Dairesel Kuyruk (Circular Queue)<\/h5>\n<p>Dairesel kuyruk, dizi tabanl\u0131 kuyruklar\u0131n verimsiz alan kullan\u0131m\u0131 sorununu \u00e7\u00f6zen bir optimizasyondur. <code>front<\/code> ve <code>rear<\/code> i\u015faret\u00e7ileri dizinin sonuna ula\u015ft\u0131\u011f\u0131nda, dizinin ba\u015f\u0131na &#8220;dairesel&#8221; olarak geri d\u00f6nerler. Bu, dizinin s\u00fcrekli olarak yeniden kullan\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>*   <code>front<\/code>: Kuyru\u011fun \u00f6n\u00fcndeki eleman\u0131n indeksini g\u00f6sterir.<br \/>\n*   <code>rear<\/code>: Kuyru\u011fa yeni eleman\u0131n eklenece\u011fi pozisyonun indeksini g\u00f6sterir.<br \/>\n*   <code>size<\/code>: Kuyruktaki eleman say\u0131s\u0131n\u0131 tutar.<\/p>\n<p>Dairesel kuyrukta <code>enqueue<\/code> ve <code>dequeue<\/code> i\u015flemleri s\u0131ras\u0131nda <code>(index + 1) % capacity<\/code> form\u00fcl\u00fc kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>Dolu Kontrol\u00fc:<\/strong> <code>(rear + 1) % capacity == front<\/code> (e\u011fer <code>size<\/code> kullan\u0131lm\u0131yorsa) veya <code>size == capacity<\/code> (e\u011fer <code>size<\/code> kullan\u0131l\u0131yorsa).<br \/>\n*   <strong>Bo\u015f Kontrol\u00fc:<\/strong> <code>front == -1<\/code> ve <code>rear == -1<\/code> (ba\u015flang\u0131\u00e7 i\u00e7in) veya <code>size == 0<\/code>.<\/p>\n<p>Yukar\u0131daki <code>main_array_queue<\/code> fonksiyonunda kullan\u0131lan <code>enqueue<\/code> ve <code>dequeue<\/code> fonksiyonlar\u0131 zaten dairesel kuyruk mant\u0131\u011f\u0131na uygun olarak yaz\u0131lm\u0131\u015ft\u0131r. <code>front<\/code> ve <code>rear<\/code> i\u015faret\u00e7ileri <code>(index + 1) % queue->capacity<\/code> \u015feklinde g\u00fcncellenir. <code>size<\/code> de\u011fi\u015fkeni ise dolu ve bo\u015f kontrollerini daha net hale getirir.<\/p>\n<h4>Ba\u011fl\u0131 Liste (Linked List) Kullanarak Kuyruk<\/h4>\n<p>Ba\u011fl\u0131 liste tabanl\u0131 kuyruk uygulamas\u0131, her eleman\u0131n bir d\u00fc\u011f\u00fcm (node) oldu\u011fu ve bu d\u00fc\u011f\u00fcmlerin birbirine i\u015faret\u00e7iler (pointer) arac\u0131l\u0131\u011f\u0131yla ba\u011fland\u0131\u011f\u0131 bir yap\u0131d\u0131r. Bu y\u00f6ntem, kuyru\u011fun dinamik olarak b\u00fcy\u00fcmesini veya k\u00fc\u00e7\u00fclmesini sa\u011flar, \u00e7\u00fcnk\u00fc bellek ihtiyac\u0131 sadece mevcut eleman say\u0131s\u0131 kadard\u0131r.<\/p>\n<h5>Ba\u011fl\u0131 Liste Tabanl\u0131 Kuyru\u011fun Avantajlar\u0131:<\/h5>\n<p>*   <strong>Dinamik Boyut:<\/strong> Kuyru\u011fun boyutu \u00f6nceden belirlenmek zorunda de\u011fildir. \u0130htiya\u00e7 duyuldu\u011funda yeni d\u00fc\u011f\u00fcmler olu\u015fturulur ve belle\u011fe eklenir.<br \/>\n*   <strong>Verimli Bellek Kullan\u0131m\u0131:<\/strong> Sadece mevcut elemanlar i\u00e7in bellek tahsis edilir, dizi tabanl\u0131 kuyruklardaki gibi bo\u015fluklar olu\u015fmaz.<\/p>\n<h5>Ba\u011fl\u0131 Liste Tabanl\u0131 Kuyru\u011fun Dezavantajlar\u0131:<\/h5>\n<p>*   <strong>Ek Bellek Y\u00fck\u00fc:<\/strong> Her d\u00fc\u011f\u00fcm i\u00e7in veri eleman\u0131n\u0131n yan\u0131 s\u0131ra bir sonraki d\u00fc\u011f\u00fcm\u00fc i\u015faret eden bir i\u015faret\u00e7i (pointer) de saklan\u0131r. Bu, dizi tabanl\u0131 yakla\u015f\u0131ma g\u00f6re biraz daha fazla bellek kullan\u0131lmas\u0131na neden olabilir.<br \/>\n*   <strong>Daha Yava\u015f Eri\u015fim:<\/strong> Dizi tabanl\u0131 kuyruklardaki ard\u0131\u015f\u0131k bellek yerle\u015fimi sayesinde elde edilen \u00f6nbellek avantaj\u0131 burada yoktur. Elemanlara eri\u015fim, i\u015faret\u00e7ileri takip etmeyi gerektirdi\u011finden biraz daha yava\u015f olabilir.<\/p>\n<h5>Ba\u011fl\u0131 Liste Tabanl\u0131 Kuyruk Yap\u0131s\u0131<\/h5>\n<p>Ba\u011fl\u0131 liste tabanl\u0131 bir kuyruk olu\u015fturmak i\u00e7in iki temel yap\u0131ya ihtiyac\u0131m\u0131z var:<\/p>\n<p>1.  <strong><code>struct Node<\/code>:<\/strong> Kuyruktaki her bir eleman\u0131 temsil eden d\u00fc\u011f\u00fcm. Bir veri ve bir sonraki d\u00fc\u011f\u00fcm\u00fc g\u00f6steren bir i\u015faret\u00e7i i\u00e7erir.<br \/>\n2.  <strong><code>struct Queue<\/code>:<\/strong> Kuyru\u011fun kendisini temsil eden yap\u0131. Kuyru\u011fun \u00f6n\u00fcn\u00fc (<code>front<\/code>) ve arkas\u0131n\u0131 (<code>rear<\/code>) g\u00f6steren iki i\u015faret\u00e7i i\u00e7erir.<\/p>\n<pre><code class=\"language-c\">#include <stdio.h>\n#include <stdlib.h>\n#include <limits.h> \/\/ INT_MIN i\u00e7in\n\n\/\/ Ba\u011fl\u0131 liste d\u00fc\u011f\u00fcm\u00fc yap\u0131s\u0131\nstruct Node {\n    int data;\n    struct Node* next;\n};\n\n\/\/ Kuyruk yap\u0131s\u0131\nstruct Queue_LL {\n    struct Node <em>front, <\/em>rear;\n    int size; \/\/ Kuyruktaki eleman say\u0131s\u0131n\u0131 tutmak i\u00e7in\n};\n\n\/\/ Yeni bir d\u00fc\u011f\u00fcm olu\u015fturur\nstruct Node* newNode(int data) {\n    struct Node<em> temp = (struct Node<\/em>) malloc(sizeof(struct Node));\n    if (!temp) {\n        perror(\"D\u00fc\u011f\u00fcm i\u00e7in bellek ay\u0131rma hatas\u0131\");\n        exit(EXIT_FAILURE);\n    }\n    temp->data = data;\n    temp->next = NULL;\n    return temp;\n}\n\n\/\/ Bo\u015f bir kuyruk olu\u015fturur\nstruct Queue_LL* createQueue_LL() {\n    struct Queue_LL<em> q = (struct Queue_LL<\/em>) malloc(sizeof(struct Queue_LL));\n    if (!q) {\n        perror(\"Kuyruk i\u00e7in bellek ay\u0131rma hatas\u0131\");\n        exit(EXIT_FAILURE);\n    }\n    q->front = NULL;\n    q->rear = NULL;\n    q->size = 0;\n    printf(\"Ba\u011fl\u0131 liste tabanl\u0131 kuyruk olu\u015fturuldu.\\n\");\n    return q;\n}\n\n\/\/ Kuyru\u011fun bo\u015f olup olmad\u0131\u011f\u0131n\u0131 kontrol eder\nint isEmpty_LL(struct Queue_LL* q) {\n    return (q->front == NULL);\n}\n\n\/\/ Kuyru\u011fa eleman ekler (enqueue)\nvoid enqueue_LL(struct Queue_LL* q, int data) {\n    struct Node* temp = newNode(data);\n\n    \/\/ Kuyruk bo\u015fsa, hem \u00f6n hem de arka yeni d\u00fc\u011f\u00fcm olur\n    if (q->rear == NULL) {\n        q->front = temp;\n        q->rear = temp;\n    } else {\n        \/\/ Aksi takdirde, yeni d\u00fc\u011f\u00fcm\u00fc arkan\u0131n sonuna ekler ve arkay\u0131 g\u00fcnceller\n        q->rear->next = temp;\n        q->rear = temp;\n    }\n    q->size++;\n    printf(\"%d ba\u011fl\u0131 liste kuyru\u011funa eklendi.\\n\", data);\n}\n\n\/\/ Kuyruktan eleman \u00e7\u0131kar\u0131r (dequeue)\nint dequeue_LL(struct Queue_LL* q) {\n    \/\/ Kuyruk bo\u015fsa, NULL d\u00f6nd\u00fcr\n    if (isEmpty_LL(q)) {\n        printf(\"Kuyruk bo\u015f! \u00c7\u0131kar\u0131lacak eleman yok.\\n\");\n        return INT_MIN; \/\/ Hata durumunu belirtmek i\u00e7in\n    }\n\n    \/\/ Kuyru\u011fun \u00f6n\u00fcndeki d\u00fc\u011f\u00fcm\u00fc sakla ve \u00f6n\u00fc bir sonraki d\u00fc\u011f\u00fcme ta\u015f\u0131\n    struct Node* temp = q->front;\n    int data = temp->data;\n\n    q->front = q->front->next;\n\n    \/\/ E\u011fer \u00f6n NULL olursa, kuyruk bo\u015falm\u0131\u015ft\u0131r, bu y\u00fczden arkay\u0131 da NULL yap\n    if (q->front == NULL) {\n        q->rear = NULL;\n    }\n\n    free(temp); \/\/ \u00c7\u0131kar\u0131lan d\u00fc\u011f\u00fcm\u00fcn belle\u011fini serbest b\u0131rak\n    q->size--;\n    printf(\"%d ba\u011fl\u0131 liste kuyru\u011fundan \u00e7\u0131kar\u0131ld\u0131.\\n\", data);\n    return data;\n}\n\n\/\/ Kuyru\u011fun \u00f6n\u00fcndeki eleman\u0131 d\u00f6nd\u00fcr\u00fcr (peek\/front)\nint front_LL(struct Queue_LL* q) {\n    if (isEmpty_LL(q)) {\n        printf(\"Kuyruk bo\u015f! \u00d6ndeki eleman yok.\\n\");\n        return INT_MIN;\n    }\n    return q->front->data;\n}\n\n\/\/ Kuyru\u011fun arkas\u0131ndaki eleman\u0131 d\u00f6nd\u00fcr\u00fcr (rear)\nint rear_LL(struct Queue_LL* q) {\n    if (isEmpty_LL(q)) {\n        printf(\"Kuyruk bo\u015f! Arkadaki eleman yok.\\n\");\n        return INT_MIN;\n    }\n    return q->rear->data;\n}\n\n\/\/ Kuyru\u011fun boyutunu d\u00f6nd\u00fcr\u00fcr\nint size_LL(struct Queue_LL* q) {\n    return q->size;\n}\n\n\/\/ Kuyru\u011fu temizler ve t\u00fcm d\u00fc\u011f\u00fcmlerin belle\u011fini serbest b\u0131rak\u0131r\nvoid destroyQueue_LL(struct Queue_LL* q) {\n    if (q) {\n        struct Node* current = q->front;\n        struct Node* next;\n        while (current != NULL) {\n            next = current->next;\n            free(current);\n            current = next;\n        }\n        free(q);\n        printf(\"Ba\u011fl\u0131 liste tabanl\u0131 kuyruk bellekten temizlendi.\\n\");\n    }\n}\n\n\/\/ Ana fonksiyon: Ba\u011fl\u0131 liste tabanl\u0131 kuyruk kullan\u0131m\u0131\nint main_linked_list_queue() {\n    struct Queue_LL* q = createQueue_LL();\n\n    enqueue_LL(q, 10);\n    enqueue_LL(q, 20);\n    dequeue_LL(q);\n    dequeue_LL(q);\n    enqueue_LL(q, 30);\n    enqueue_LL(q, 40);\n    enqueue_LL(q, 50);\n\n    printf(\"Kuyru\u011fun \u00f6n\u00fcndeki eleman: %d\\n\", front_LL(q));\n    printf(\"Kuyru\u011fun arkas\u0131ndaki eleman: %d\\n\", rear_LL(q));\n    printf(\"Kuyruktaki eleman say\u0131s\u0131: %d\\n\", size_LL(q));\n\n    dequeue_LL(q);\n    dequeue_LL(q);\n    dequeue_LL(q);\n    dequeue_LL(q); \/\/ Kuyruk bo\u015f, hata mesaj\u0131 verecek\n\n    destroyQueue_LL(q);\n    return 0;\n}<\/code><\/pre>\n<p>Ba\u011fl\u0131 liste tabanl\u0131 kuyruk uygulamas\u0131nda, <code>enqueue<\/code> i\u015flemi her zaman <code>rear<\/code> i\u015faret\u00e7isinin g\u00f6sterdi\u011fi d\u00fc\u011f\u00fcm\u00fcn <code>next<\/code> alan\u0131na yeni bir d\u00fc\u011f\u00fcm ekleyerek ve <code>rear<\/code>&#8216;\u0131 yeni d\u00fc\u011f\u00fcme ta\u015f\u0131yarak O(1) zaman karma\u015f\u0131kl\u0131\u011f\u0131nda ger\u00e7ekle\u015ftirilir. <code>dequeue<\/code> i\u015flemi ise <code>front<\/code> i\u015faret\u00e7isinin g\u00f6sterdi\u011fi d\u00fc\u011f\u00fcm\u00fc \u00e7\u0131kararak ve <code>front<\/code>&#8216;u bir sonraki d\u00fc\u011f\u00fcme ta\u015f\u0131yarak yine O(1) zaman karma\u015f\u0131kl\u0131\u011f\u0131nda ger\u00e7ekle\u015ftirilir. Bellek y\u00f6netimi (<code>malloc<\/code> ve <code>free<\/code>) burada kritik \u00f6neme sahiptir.<\/p>\n<h3>Kuyruklar\u0131n Karma\u015f\u0131kl\u0131k Analizi<\/h3>\n<p>Hem dizi tabanl\u0131 (dairesel kuyruk dahil) hem de ba\u011fl\u0131 liste tabanl\u0131 kuyruk uygulamalar\u0131 i\u00e7in temel i\u015flemlerin zaman karma\u015f\u0131kl\u0131\u011f\u0131 genellikle \u00e7ok verimlidir.<\/p>\n<p>*   <strong>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong><br \/>\n    *   <code>enqueue<\/code> (ekleme): O(1) &#8211; Her iki y\u00f6ntemde de eleman eklemek sabit zaman al\u0131r.<br \/>\n    *   <code>dequeue<\/code> (\u00e7\u0131karma): O(1) &#8211; Her iki y\u00f6ntemde de eleman \u00e7\u0131karmak sabit zaman al\u0131r.<br \/>\n    *   <code>front<\/code> \/ <code>peek<\/code> (\u00f6ndeki eleman\u0131 g\u00f6rme): O(1) &#8211; \u00d6ndeki elemana eri\u015fim sabit zaman al\u0131r.<br \/>\n    *   <code>isEmpty<\/code> \/ <code>isFull<\/code> (bo\u015f\/dolu kontrol\u00fc): O(1) &#8211; Bu kontroller sabit zaman al\u0131r.<br \/>\n    *   <code>size<\/code> (boyut): O(1) &#8211; E\u011fer kuyruk yap\u0131s\u0131 i\u00e7inde eleman say\u0131s\u0131 tutuluyorsa sabit zaman al\u0131r.<\/p>\n<p>*   <strong>Yer Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong><br \/>\n    *   <strong>Dizi Tabanl\u0131:<\/strong> O(N), burada N kuyru\u011fun maksimum kapasitesidir. Dizi \u00f6nceden tahsis edildi\u011fi i\u00e7in, kuyruk bo\u015f olsa bile bu kadar yer kaplar.<br \/>\n    *   <strong>Ba\u011fl\u0131 Liste Tabanl\u0131:<\/strong> O(M), burada M kuyruktaki mevcut eleman say\u0131s\u0131d\u0131r. Her eleman i\u00e7in bir d\u00fc\u011f\u00fcm (veri + i\u015faret\u00e7i) tahsis edilir. Dinamik yap\u0131s\u0131 sayesinde yaln\u0131zca gerekli bellek kullan\u0131l\u0131r.<\/p>\n<h3>Hangi Uygulama Y\u00f6ntemi Ne Zaman Tercih Edilmeli?<\/h3>\n<p>Kuyruk uygulamas\u0131 i\u00e7in do\u011fru y\u00f6ntemi se\u00e7mek, uygulaman\u0131n \u00f6zel gereksinimlerine ba\u011fl\u0131d\u0131r:<\/p>\n<p>*   <strong>Dizi Tabanl\u0131 Kuyruk (Dairesel):<\/strong><br \/>\n    *   <strong>Tercih Edilmeli:<\/strong> Kuyru\u011fun maksimum boyutu \u00f6nceden biliniyorsa ve bu boyut genellikle sabit kalacaksa. Bellek yerle\u015fimi (cache locality) \u00f6nemliyse ve performansta k\u00fc\u00e7\u00fck avantajlar aran\u0131yorsa. Bellek \u00fczerinde daha s\u0131k\u0131 kontrol isteniyorsa.<br \/>\n    *   <strong>Ka\u00e7\u0131n\u0131lmal\u0131:<\/strong> Kuyru\u011fun boyutu s\u0131k s\u0131k ve \u00f6ng\u00f6r\u00fclemeyen bir \u015fekilde de\u011fi\u015fiyorsa, \u00e7\u00fcnk\u00fc dizi yeniden boyutland\u0131rma gerektirebilir (ki bu pahal\u0131d\u0131r) veya kapasite doldu\u011funda yeni eleman eklenemez.<\/p>\n<p>*   <strong>Ba\u011fl\u0131 Liste Tabanl\u0131 Kuyruk:<\/strong><br \/>\n    *   <strong>Tercih Edilmeli:<\/strong> Kuyru\u011fun boyutu dinamik olarak de\u011fi\u015fecekse ve maksimum boyut \u00f6nceden bilinemiyorsa. Bellek esnekli\u011fi ve kolay geni\u015fleyebilirlik \u00f6nemliyse.<br \/>\n    *   <strong>Ka\u00e7\u0131n\u0131lmal\u0131:<\/strong> Her d\u00fc\u011f\u00fcm i\u00e7in ek i\u015faret\u00e7i belle\u011fi nedeniyle k\u00fc\u00e7\u00fck bir bellek overhead&#8217;i kabul edilemezse. Belirli bir durumda \u00f6nbellek performans\u0131 kritik \u00f6neme sahipse (nadiren b\u00fcy\u00fck bir sorun te\u015fkil eder).<\/p>\n<p>\u00c7o\u011fu genel ama\u00e7l\u0131 uygulama i\u00e7in ba\u011fl\u0131 liste tabanl\u0131 kuyruklar daha esnek ve kullan\u0131\u015fl\u0131d\u0131r. Ancak, kaynak k\u0131s\u0131tl\u0131 sistemlerde veya belirli performans gereksinimleri olan durumlarda dairesel dizi tabanl\u0131 kuyruklar tercih edilebilir.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Uygulamalar\u0131<\/h3>\n<p>Kuyruklar, bilgisayar bilimlerinin bir\u00e7ok alan\u0131nda temel bir yap\u0131 ta\u015f\u0131d\u0131r:<\/p>\n<p>*   <strong>\u0130\u015fletim Sistemleri:<\/strong><br \/>\n    *   <strong>G\u00f6rev Zamanlama:<\/strong> CPU&#8217;ya g\u00f6nderilmeyi bekleyen s\u00fcre\u00e7ler bir kuyrukta tutulur.<br \/>\n    *   <strong>G\/\u00c7 (Input\/Output) Tamponlar\u0131:<\/strong> Disk veya a\u011f kart\u0131 gibi yava\u015f cihazlardan gelen veya giden veriler, i\u015flenene kadar kuyruklarda bekletilir.<br \/>\n    *   <strong>Yazd\u0131rma Kuyruklar\u0131:<\/strong> Bir a\u011f yaz\u0131c\u0131s\u0131na g\u00f6nderilen belgeler, s\u0131rayla yazd\u0131r\u0131lmak \u00fczere bir kuyrukta bekler.<br \/>\n*   <strong>A\u011f \u0130leti\u015fimi:<\/strong><br \/>\n    *   <strong>Paket Y\u00f6nlendirme:<\/strong> Y\u00f6nlendiriciler (router) gelen a\u011f paketlerini i\u015fleme s\u0131ras\u0131na g\u00f6re bir kuyrukta tutar.<br \/>\n    *   <strong>Trafik Y\u00f6netimi:<\/strong> A\u011f t\u0131kan\u0131kl\u0131\u011f\u0131n\u0131 \u00f6nlemek i\u00e7in paketler belirli bir s\u0131raya g\u00f6re g\u00f6nderilir.<br \/>\n*   <strong>Web Sunucular\u0131:<\/strong> Gelen HTTP istekleri, sunucunun i\u015fleme kapasitesine g\u00f6re bir kuyrukta bekletilebilir.<br \/>\n*   <strong>Veri Yap\u0131s\u0131 ve Algoritmalar:<\/strong><br \/>\n    *   <strong>Geni\u015flik \u00d6ncelikli Arama (BFS):<\/strong> Bir grafikte veya a\u011fa\u00e7ta d\u00fc\u011f\u00fcmleri seviye seviye ziyaret etmek i\u00e7in kuyruk kullan\u0131l\u0131r.<br \/>\n    *   <strong>Kritik Yol Analizi:<\/strong> Proje y\u00f6netiminde g\u00f6rev ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ve kritik yolu belirlemek i\u00e7in kullan\u0131labilir.<br \/>\n*   <strong>Sim\u00fclasyonlar:<\/strong> Ger\u00e7ek d\u00fcnyadaki kuyruk sistemlerini (banka kuyruklar\u0131, s\u00fcpermarket kasalar\u0131) modellemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Kuyruklar, bilgisayar bilimlerindeki en temel ve yayg\u0131n kullan\u0131lan veri yap\u0131lar\u0131ndan biridir. &#8220;\u0130lk giren ilk \u00e7\u0131kar&#8221; (FIFO) prensibi, bir\u00e7ok senaryoda do\u011fal bir s\u0131ralama ve i\u015fleme mekanizmas\u0131 sa\u011flar. C dilinde kuyruklar\u0131 uygulamak i\u00e7in dizi tabanl\u0131 (\u00f6zellikle dairesel kuyruk) ve ba\u011fl\u0131 liste tabanl\u0131 olmak \u00fczere iki ana y\u00f6ntem bulunmaktad\u0131r.<\/p>\n<p>Dizi tabanl\u0131 kuyruklar, sabit boyutlu ve bellekte ard\u0131\u015f\u0131k yerle\u015fimin avantajlar\u0131na sahipken, ba\u011fl\u0131 liste tabanl\u0131 kuyruklar dinamik boyut ve esnek bellek y\u00f6netimi sunar. Her iki uygulaman\u0131n da temel i\u015flemler i\u00e7in O(1) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip olmas\u0131, kuyruklar\u0131 \u00e7o\u011fu durumda olduk\u00e7a verimli k\u0131lar.<\/p>\n<p>Do\u011fru kuyruk uygulamas\u0131n\u0131 se\u00e7mek, uygulaman\u0131z\u0131n gereksinimlerine (bellek k\u0131s\u0131tlamalar\u0131, performans hedefleri, dinamik boyut ihtiyac\u0131) ba\u011fl\u0131d\u0131r. Bu makalede sunulan kod \u00f6rnekleri ve a\u00e7\u0131klamalar, C dilinde kendi kuyruk yap\u0131lar\u0131n\u0131z\u0131 olu\u015fturman\u0131z ve farkl\u0131 senaryolarda kullanman\u0131z i\u00e7in sa\u011flam bir temel sa\u011flamaktad\u0131r. Kuyruklar\u0131n g\u00fcc\u00fcn\u00fc ve esnekli\u011fini anlayarak, daha sa\u011flam ve verimli yaz\u0131l\u0131mlar geli\u015ftirebilirsiniz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)\nKuyruk (Queue), bilgisayar bilimlerinde ve yaz\u0131l\u0131m m\u00fchendisli\u011finde s\u0131k\u00e7a","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-39150","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)\" \/>\n<meta property=\"og:description\" content=\"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle) Kuyruk (Queue), bilgisayar bilimlerinde ve yaz\u0131l\u0131m m\u00fchendisli\u011finde s\u0131k\u00e7a\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-15T10:40:42+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)\",\"datePublished\":\"2026-02-15T10:40:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/\"},\"wordCount\":1838,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/\",\"name\":\"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-15T10:40:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/","og_locale":"tr_TR","og_type":"article","og_title":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)","og_description":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle) Kuyruk (Queue), bilgisayar bilimlerinde ve yaz\u0131l\u0131m m\u00fchendisli\u011finde s\u0131k\u00e7a","og_url":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-15T10:40:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)","datePublished":"2026-02-15T10:40:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/"},"wordCount":1838,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/","url":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/","name":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-15T10:40:42+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/c-dilinde-kuyruk-olusturma-detayli-bir-rehber-kod-ornekleriyle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C Dilinde Kuyruk Olu\u015fturma: Detayl\u0131 Bir Rehber (Kod \u00d6rnekleriyle)"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39150"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39150\/revisions"}],"predecessor-version":[{"id":39151,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39150\/revisions\/39151"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}