Yazan : Şadi Evren ŞEKER
Sıra, basit veri yapılarından birisidir. Buna göre bir sıraya ilk giren ilk çıkar (FIFO , first in first out fifo). Bazı kaynaklarda kuyruk kelimesi de kullanılır. Basitçe bir gişe önündeki bilet kuyruğu veya bilet sırası olarak düşünülebilir. Bu yapının olmazsa olmaz iki adet fonksiyonu bulunur:
enque(veri) veya push(veri) -> verilen veriyi sıraya koyar
deque() veya pop() -> sıradan bir veri çıkararak sıranın boyutunu azaltır ve çıkarılan veriyi çağrıldığı yere döndürür.
Komutlar | Sıranın durumu |
enque(10) | 10 |
enque(20) | 10 -> 20 |
enque(30) | 10 -> 20 ->30 |
deque() | 20 -> 30 |
deque() | 30 |
deque() | Boş |
Yukarıda bir sıra üzerinde yapılan ekleme ve çıkarma işlemleri gösterilmiştir. Yukarıda sıranın durumu olarak gösterilen yapıda bir bağlı liste üzerinden verilerin nasıl eklenip çıkarıldığı tasvir edilmiştir. Bir sıra için bağlı liste kullanılabileceği gibi dizi (Array) de kullanılabilir. Ayrıca yukarıdaki bağlı listede, listenin sağına eklenerek solundan çıkarma işlemi yapılmıştır. Bu işlemin tam tersi olan soluna yeni verileri ekleyerek sağından çıkarma işlemi de yapılabilir.
Dizi kullanıldığında karşılaşılan problem dizinin boyutunun sınırlı olmasıdır. Bu durumda dizideki verilerin dizi boyutunu aşınca daha büyük başka bir diziye taşınması gerekir. Ayrıca dizinin belirli bir elemenından sayılar dequeue yapılıyorsa dizideki elemanların dequeue yapıldıkça kaydırılması da gerekir.
Aşağıda bağlı liste (linked list) ve dizi (Array) kullanılarak yazılmış iki adet kod örneği verilmiştir:
- Bağlı liste (linked list) kullanarak sıra (queue) örnek kodu (C dilinde)
- Dizi (Array) kullanarak sıra (array-based queue) örnek kodu (C dilinde)
- Bağlı liste (linked list) kullanarak sıra (queue) örnek kodu (C++ Dilinde)
Sıra (Queue ) içerisine veri ekleme fonksiyonu genel olarak enqueue(sıraya koymak, sıralamak) ve sıradaki bir elemanın sıradan alınmasına ise dequeue (sıradan almak, çıkarmak) ismi verilmektedir.