Home / C ve C++ / C Programlama – Kuyruk

C Programlama – Kuyruk

Yığın gibi, kuyruk (queue) da bir listedir. Fakat, kuyrukta, ekleme bir uçtan yapılırken, silme diğer uçtan yapılır. Kuyruk elemanlarına erişim First In, First Out (FIFO) düzeni seklindedir. Bir markette ödemeyi yapmak için bekleyen müşteriler gibi, sıradaki ilk müşteri ödemeyi yapan ilk kişi olacaktır. Listenin diker bir sınırlandırılmış şeklidir. Ekleme bir uçtan yapılırken, silme de diğer uçtan yapılır.

Temel islemler

  1. enqueue: en arkaya (rear) eleman ekleme
  2. dequeue: listenin başından eleman silme
class Queue {
    public:
        Queue(int size = 10);
    ~Queue() {
        delete[] values;
    }
    bool IsEmpty(void);
    bool IsFull(void);
    bool Enqueue(double x);
    bool Dequeue(double & amp; x);
    void DisplayQueue(void);
    private:
        int front;
    int rear;
    int counter;
    int maxSize;
    double * values;
};

// KUYRUK TANIMLAMALARI

Queue::Queue(int size /* = 10 */ ) {
    values = new double[size];
    maxSize = size;
    front = 0;
    rear = -1;
    counter = 0;
}

// KUYRUK BOS MU DOLU MU?

bool Queue::IsEmpty() {
    if (counter)
        return false;
    else return true;
}

bool Queue::IsFull() {
    if (counter & lt; maxSize)
        return false;
    else return true;
}

// KUYRUK EKLEME

bool Queue::Enqueue(double x) {
    if (IsFull()) {
        cout & lt; & lt;
        "Hata: Dolu." & lt; & lt;
        endl;
        return false;
    } else {
        position(circular)
        rear = (rear + 1) % maxSize;
        values[rear] = x;
        counter++;
        return true;
    }
}

// KUYRUKTAN ÇIKARMA

bool Queue::Dequeue(double & amp; x) {
    if (IsEmpty()) {
        cout & lt; & lt;
        "Hata: Bos" & lt; & lt;
        endl;
        return false;
    } else {
        x = values[front];
        front = (front + 1) % maxSize;
        counter--;
        return true;
    }
}
Etiketlendi:

Cevap bırakın

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