Kuyruklar (Queues)

  • Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır.
  • Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların baştan (front) yapıldığı veri yapılarıdır.
  • Bir eleman ekleneceği zaman kuyruğun sonuna eklenir.
  • Bir eleman çıkarılacağı zaman kuyrukta bulunan ilk eleman çıkarılır.
  • Bu eleman da kuyruktaki elemanlar içinde ilk eklenen elemandır.
  • Bu nedenle kuyruklara FIFO (First-In First-Out = ilk giren ilk çıkar) listeleri de denilmektedir.
  • Gerçek yaşamda da bankalarda, duraklarda, gişelerde, süpermarketlerde, otoyollarda kuyruklar oluşmaktadır.
  • Kuyruğa ilk olarak girenler işlemlerini ilk olarak tamamlayıp kuyruktan çıkarlar.
  • Veri yapılarındaki kuyruklar bu tür veri yapılarının simülasyonunda  kullanılmaktadır.
  • Ayrıca işlemci, yazıcı, disk gibi kaynaklar üzerindeki işlemlerin yürütülmesinde ve bilgisayar ağlarında paketlerin yönlendirilmesinde de kuyruklardan yararlanılmaktadır.
    #include “stdafx.h”
    #include <iostream>
    using namespace std;

    #define MAXSIZE 5
    //typedef int tam;
    struct ornek
    {
    int dizi[MAXSIZE];// kuyruk
    int on;           // kuyrukdan kim çıkacak indis değişkeni
    int arka;         // kuyruğa kim girecek indis değişkeni
    int say;          // kuyrukda kaç kişi var değişkeni
    };
    typedef struct ornek orn;
    void initQueue(orn *p);
    void insert (orn *p, int yeni_deger);
    int remove(orn *p);
    int isEmpty(orn *p);
    int main()
    {
    orn a;
    int i,k;
    initQueue(&a);

    insert(&a, 29);
    k = remove(&a);
    cout << ” cikan kisi = ” << k << endl;

    cout << ” on = ” << a.on << endl;
    cout << ” arka = ” << a.arka << endl;
    cout << ” say = ” << a.say << endl;

    cin.get();
    }// main sonu

    void initQueue(orn *p)
    {
    p->on , p->arka, p->say = 0;
    }

    void insert(orn *p, int yeni_deger)
    {
    if (p->say != MAXSIZE)
    {
    p->dizi[p->arka] = yeni_deger;
    p->arka = (p->arka +1) % MAXSIZE;
    p->say = p->say + 1;
    }
    else cout << “kuyruk dolu\n”;

    }// insert sonu

    int isEmpty(orn p)
    {
    if(p.say == 0 )return 1;
    return 0;
    }//is Empty sonu

    int remove(orn *p)
    {
    int k = 0;
    if (p->say != 0)
    {
    k = p->dizi[p->on];
    p->on = (p->on +1) % MAXSIZE;
    (p->say)–;
    }
    else cout << “kuyruk boş\n”;
    return k;
    }// remove sonu

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s