İstediğiniz kaynak kodu yükleniyor!
Yüklemede…
Her şey hazırlandı
Tek yapman gereken yapıştırıp çalıştırmak.
Özel Kuyruk
//Omer Alp KIRAY//
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 30
typedef struct okuyruk
{
int veri[MAX];
int arka, on1;
}okuyruk;
void kbaslat(okuyruk *p);
int bos(okuyruk *p);
int dolu(okuyruk *p);
void sirayaekle(okuyruk *p, int deger);
int siradancikar(okuyruk *p);
void yazdir(okuyruk *p);
void main()
{
int deger, secim, dugum, sayac;
okuyruk s;
kbaslat(&s);
do
{
printf("\n1)Olustur \n2)Ekle \n3)Sil \n4)Listele \n5)Cikis\n");
printf("\nSeciminiz: ");
scanf_s("%d", &secim);
switch (secim) {
case 1: printf("\nDugum Sayisini Giriniz: ");
scanf_s("%d", &dugum);
kbaslat(&s);
printf("Verileri giriniz: ");
for (sayac = 0; sayac < dugum; sayac++)
{
scanf_s("%d", °er);
if (dolu(&s))
{
printf("\nKuyruk Dolu..\n");
exit(0);
}
sirayaekle(&s, deger);
}
break;
case 2: printf("\nEklemek istediginiz degeri giriniz: ");
scanf_s("%d\n", °er);
if (dolu(&s))
{
printf("\nKuyruk Dolu..\n");
exit(0);
}
sirayaekle(&s, deger);
break;
case 3: if (bos(&s))
{
printf("\nKuyruk Bos..\n");
_getch();
exit(0);
}
deger = siradancikar(&s);
printf("\nSildiginiz deger = %d", deger);
break;
case 4: yazdir(&s);
break;
default: break;
}
} while (secim != 5);
}
void kbaslat(okuyruk *p)
{
p->arka = -1;
p->on1 = -1;
}
int bos(okuyruk *p)
{
if (p->arka == -1)
return(1);
return(0);
}
int dolu(okuyruk *p)
{
if ((p->arka + 1) % MAX == p->on1)
return(1);
return(0);
}
void sirayaekle(okuyruk *p, int deger)
{
int sayac;
if (dolu(p))
printf("\nKuyruk Doldu (Tasacak).");
else
{
if (bos(p))
{
p->arka = p->on1 = 0;
p->veri[0] = deger;
}
else
{
sayac = p->arka;
while (deger>p->veri[sayac])
{
p->veri[(sayac + 1) % MAX] = p->veri[sayac];
sayac = (sayac - 1 + MAX) % MAX; //kuyrukta saatin tersi yonunde hareket
if ((sayac + 1) % MAX == p->on1)
break;
}
//deger'i ekle
sayac = (sayac + 1) % MAX;
p->veri[sayac] = deger;
//arkayi yeniden ayarlar
p->arka = (p->arka + 1) % MAX;
}
}
}
int siradancikar(okuyruk *p)
{
int deger;
if (bos(p))
{
printf("\nKuyruk Bos..");
}
else
{
deger = p->veri[p->on1];
if (p->arka == p->on1) //son elemani siler
kbaslat(p);
else
p->on1 = (p->on1 + 1) % MAX;
}
return(deger);
}
void yazdir(okuyruk *p)
{
int sayac, deger;
if (bos(p))
{
printf("\nKuyruk Bos..");
}
else
{
sayac = p->on1;
while (sayac != p->arka)
{
deger = p->veri[sayac];
printf("\n%d", deger);
sayac = (sayac + 1) % MAX;
}
//Son elemani yazdirir
deger = p->veri[sayac];
printf("\n%d", deger);
}
}
Özel kuyruk için; oluşturma, ekleme, silme, listeleme özelliklerine sahip olan bir kuyruk yapısı. Ekran Çıktıları:
Oluşturma Seçeneği:


