İ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", &deger);
				if (dolu(&s))
				{
					printf("\nKuyruk Dolu..\n");
					exit(0);
				}
				sirayaekle(&s, deger);
			}
			break;

		case 2: printf("\nEklemek istediginiz degeri giriniz: ");
			scanf_s("%d\n", &deger);
			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:
Oluşturma

Ekleme Seçeneği:

Ekleme

Silme Seçeneği:
Silme

Listeleme Seçeneği:
Listeleme

Anasayfa!

Anasayfa

Manzara-1.
May 14th, 2016
Manzara-2.
May 15th, 2016
Manzara-3.
May 16th, 2016

İletmek İçin