Veri Yapıları Final Notları 3 – Dizi Queue Bellek

#include <stdio.h>
#include <stdlib.h>
//Queue bellek FIFO(İlk giren ilk çıkar) mantığı ile çalışır.
//Örneğin yazıcıdan birden çok çıktı alırken sıraya ilk alınan çıktı şilem tamamlandıktan sonra listeden çıkar ve sonraki çıktı gelir ve işlemler birbirleirni tekrarlar.
//Queue bellek ile liste dolduğunda sıfırlanır ve diğer elemanların gelmesi için yer açılmış olur.
#define QUEUE_SIZE 5//define(ön işlemci komutu) QUEUE_SIZE adında değişkenine 5 değerini atamıştır.
char queue[QUEUE_SIZE] = {0};//char tipinde queue adında  değişken QUEUE_SIZE kadar değer verilmiştir ve ilk indisine 0 değerini atamıştır.
int head=0,tail=0;//head ile listenin başını temsil eden bir değişken ve tail ilede her girilen karkater birimini temsil eden değişkeni tanımlamış olduk.
void add(char c)//c değişkenine değer gönderilir. değer tail’ıncı indisine yollanır. tail değişkeni QUEUE_SIZE’dan büyük eşit olması durumunda tail 0 lanır ve sınırı aşan değerler 0.indisden itibaren queue dizisine gönderilir.
{
queue[tail++]=c;//queue dizisinin tail’nci indisine c karakterini yolla ve taill’ı bir arttır
if(tail>=QUEUE_SIZE) tail=0;//tail’in uzunluğu QUEUE_SIZE dan büyük ve eşit olması halinde tail=0 olur ve sığmayan değerler 0.indisten itibaren yeniden yazılır
}
int empty()
{
return head==tail;//listenin başını temsileden head ile bulunduğumuz birimi temsil eden tail eşit olması halinde true döndürür
}
char get()
{
if(empty()) return ‘\0’;//empty() fonksiyonundan dönen değer true ise ifadenin souna \0 koy
if(head>=QUEUE_SIZE) head=0;//listenin başını ifade eden head değişkeni QUEUE_SIZE den büyük olması halinde head=0 olsun
return queue[head++];//queue dizisinin head’ncı indisini döndür ve head’ı bir arttır
}
int main(int argc, char *argv[])
{
  char c;
printf(“Bir cumle giriniz: “);
for(;;)
{
if((c=getchar())==‘\n’) break;//kullanıcının girdiği metnin her karakterini c ye atayan ve girilen karakter ‘\n’ ifadesine yani bittiğini temsil etmesi durumunda döngüden çıkılır
printf(“%c”,c);//girilen karkater ekrana yazdırılır.
add(c); //c karakterini add() fonksiyonu ile git ve diziye ekle
}
printf(“\nGirilen cumle: “);
while(!empty()) printf(“%c”, get());//eğer empty() false dönerse ekrana get() fonksiyonujndan dönen değeri ekrana yazdır
printf(“\n”);
  system(“PAUSE”);
  return 0;
}


Yazılıma olan tutkusu için Trakya Üniversitesi - Bilgisayar Teknolojisi ve Bilişim Sistemleri öğrencisi, bölüm temsilcisi ve Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu okul temsilcisi olarak öğrenimini 2016'da tamamladı. Junior Java Developer olarak aktif iş hayatına devam etmektedir.

Yazıyı Paylaş

Related Articles

Yorum Yaz

© 2019 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları