1~

Minter Coder's Blog

Veri Yapıları & Algoritmalar Queue (Kuyruk) 1 - Static

2022-05-26

Queue(Kuyruk) ilk giren ilk çıkar (FIFO- First In First Out) mantığıyla çalışan ve bellek üzerinde kurulan bir mekanizmadır.Static uygulamasını diziler üzerinde göreceğiz hemen bakalım.

#include<stdio.h>
#include<stdlib.h>

#define BOY 5

// dizimizi belirttik
struct Queue{
    int front; // baş
    int rear; // son
    int array[BOY];
};


struct Queue queue;

 

// ekleme işlemimiz
void insert(int data){
    if(queue.front==-1){
        // eğer ki başta eleman yok ise front'u sıfır yap
        queue.front=0;
    }
    // ve sondaki elemanı bir arttır
    queue.rear++;
    // sondaki elemanın index değerine göre datayı aktar
    queue.array[queue.rear]=data;
}

void delete(){
    // baştaki elemanın değeri -1 yada baştaki değer sondaki değerden büyükse demek ki kuyruk boştur
    if(queue.front==-1 || queue.front>queue.rear){
        printf("Queue is empty!!\n");
    }
    // kuyruk dolu ise baştaki elemanın değerini bir arttır baştaki elemanı çıkar demek.
    else{
        queue.front++;
    }
    
}

void display(){
    // baştaki elemanın değerini i'ye ata sondaki elemana eşit olana kadar döngüye gir ve elemanı yazdır.
    for(int i = queue.front;i<=queue.rear;i++){
        printf("%d\t",queue.array[i]);
    }
}

 

int main(){
    // baştaki değeri -1 yaptık eleman ilk eklediğimide 0 olacak
    queue.front= -1;
    // sondaki değeri -1 yaptık eleman eklediğimizde 1 arttıracaz
    queue.rear= -1;
    int choice,data;
    while(1){
        printf("1)Eleman Ekle\n");
        printf("2)Eleman Cikar\n");
        printf("Secim : ");
        scanf("%d",&choice);
        switch(choice){
            case 1:
                printf("Data : ");
                scanf("%d",&data);
                insert(data);
                display();
                break;
            case 2:
                delete();
                display();
                break;
                
        }
    }
    
    return 0;
}