Queue (Sınav'a Yönelik)
Son Güncelleme: 25.10.2017
#include <stdio.h>#include <stdlib.h>
#define QUEUE_SIZE 100
// Kuyruk yapısı
typedef struct queue {
int front, rear;
int items[QUEUE_SIZE];
}Queue;
// Stack oluşturma
Queue create_queue();
// Doluluk kontrolü
int empty(Queue *);
// Kuyruk degerleri arttırma
int goreceli_arttir(int );
// Kuyruğa eleman ekleme
void insert_queue(Queue *, int );
// Kuyruktan eleman çıkarma
int remove_queue(Queue *);
// Kuyruğu yazdırma
void print_queue(Queue *);
// Kuyruk islem menüsü
void menu_queue(Queue *);
int main(){
Queue myqueue = create_queue();
menu_queue(&myqueue);
}
// Stack oluşturma
Queue create_queue() {
Queue q;
q.front = q.rear = -1;
printf("-> Kuyruk olusturuldu. \n\n");
return q;
}
// Doluluk kontrolü
int empty(Queue *q) {
if (q->front == q->rear)
return 1;
return 0;
}
// Kuyruk degerleri arttırma
int goreceli_arttir(int x) {
return (x + 1) % QUEUE_SIZE;
}
// Kuyruğa eleman ekleme
void insert_queue(Queue *q, int x) {
if (q == NULL) {
printf("Kuyruk mevcut degil.\n");
return;
}
q->rear = goreceli_arttir(q->rear);
if (empty(q)) {
printf("Kuyruk dolu.\n");
return;
}
q->items[q->rear] = x;
printf("-> %d kuyruga eklendi.\n", x);
}
// Kuyruktan eleman çıkarma
int remove_queue(Queue *q) {
// Yokluk degeri
int x = 0;
if (q == NULL)
printf("Kuyruk mevcut degil.\n");
else if (empty(q))
printf("Kuyrukta veri yok.\n");
else {
q->front = goreceli_arttir(q->front);
int x = q->items[q->front];
printf("-> %d kuyruktan cikarildi.\n", x);
}
return x;
}
// Kuyruğu yazdırma
void print_queue(Queue *q) {
if (q == NULL) {
printf("Kuyruk mevcut degil.\n");
return;
}
printf("\nKuyruk verileri: \n");
if (empty(q) || q->rear == -1) {
printf("---Kuyruk bos---\n");
}
for (int temp = q->front; temp != q->rear; temp) {
temp = goreceli_arttir(temp);
printf("%d-", q->items[temp]);
}
}
// Kuyruk islem menüsü
void menu_queue(Queue *s) {
while (1) {
printf("\n*** *** ***\n");
printf(" 1 --> EKLE \n");
printf(" 2 --> CIKAR \n");
printf(" 3 --> GOSTER \n");
printf(" 0 --> CIKIS \n");
printf("*** *** ***\n");
int x;
scanf("%d", &x);
switch (x) {
case 0:
return;
case 1:
printf("Eklenecek veri: ");
scanf("%d", &x);
insert_queue(s, x);
break;
case 2:
remove_queue(s);
break;
case 3:
print_queue(s);
break;
}
}
}
Yorumlar
Yorum Gönder