QUEUELAR
Diger yaygin bir yapi turu de queuedur.Queue bir markette ki kuyruk sirasi gibidir. Sirada ki ilk kisi digerlerinden once hizmet edilir daha sonra kiler de siralarini beklerler.Queue nodlari sadece kuyrugun basindan silinirler ve tail olarak bilinen kuyruktan ekleme yapilir.Bu nedenle queue first-in, first-out(FIFO)(ilk giren ilk cikar) olarak bilinir.Diger taraftanda ekleme ve cikarma islemleri enqueue(ekleme) ve dequeue(cikarma) olarak bilinirler.
Queuelarin bilgisayar sisteminde bir cok egilimleri vardir.Cogu bilgisayarlar sadece bir tek prosesoru vardir bu nedenle sadece bir kullanici her bir seferde hizmet edilir.Diger kullanicilar icin girisler kuyrukta beklemeye alinir.Kuyrugun basinda ki kullanici bir sonra ki hizmete sahiptir.
Simdide daha once ki stack ve link list bolumumuzde yapmis oldugumuz programi burada queue kullanarak ekleme ve cikarma islemlerini yapalim.
/*Bir queue islemi ve kazanimi*/
#include <stdio.h>
#include <stdlib.h>
strcut queueNode{
char data;
struct queueNode *sonraki;
};
typedef struct queueNode QUEUENODE;
typedef QUEUEUNODE *QUEUENODEPTR;
/*Fonksiyonlar*/
void Yaz(QUEUEUNODEPTR);
int Bos(QUEUENODEPTR);
char Cikar(QUEUENODEPTR *, QUEUENODEPTR *);
void Ekle(QUEUENODEPTR *, QUEUENODEPTR *, char);
void Yonergeler(void);
main()
{
QUEUENODEPTR bas = NULL, kuyruk = NULL;
int secenek;
char madde;
Yonergeler();
printf(" ?");
scanf("%d", &secenek);
while(secenek != 3)
{
switch(secenek)
{
case 1:
printf("Bir karakter giriniz: ");
scanf("\n%c", &madde);
Ekle(&bas, &kuyruk, madde);
Yaz(bas);
break;
case 2:
if(!Bos(bas))
{
madde = Cikar(&bas, &kuyruk);
printf("%c silindi.\n", madde);
}
Yaz(bas);
break;
default:
printf("Gecersiz Secenek\n");
Yonergeler();
break;
}
printf("?");
scanf("%d", &secenek);
}
printf("Programin Sonu.\n");
return(0);
}
PROGRAMIN DEVAMI ICIN TIKLAYIN!!!
|