1~

Minter Coder's Blog

Veri Yapıları & Algoritmalar Queue (Kuyruk) 2 - Dynamic

2022-05-26

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

struct Node {
    int data;
    struct Node * next;
};


struct Node * front=NULL;
struct Node * rear=NULL;
struct Node * temp=NULL;

void insert(int data){
    // eklenecek eleman için bellekte yer ayırıyoruz
    struct Node * ptr = (struct Node * ) malloc (sizeof(struct Node));
    ptr->data=data;
    // eğer ki başta eleman yok ise
    if(front == NULL){
        // sondaki eleman eklenecek eleman olur
        rear=ptr;
        // baştaki eleman da yeni eklenecek eleman olur
        front=ptr;
        // baştaki eleman son eleman olduğu için NULL gösterir
        front->next=NULL;
        rear->next=NULL;
    }else{
        // eğer ki başta eleman var ise artık son elemanden önceki eleman yeni eklenen elemanı gösterir çünkü son eleman olacak
        rear->next=ptr;
        // son eleman yeni eklenen eleman olur ve
        rear=ptr;
        // ondan sonraki değer de NULL Gösterir
        rear->next=NULL;            
    }
}

void delete(){
    if(front==NULL){
        printf("Queue is empty!");
    }else{
        // 2.elemanı temp'e atıyoruz
        temp=front->next;
        // baştaki elemanı uçuruyoruz
        free(front);
        // artık 2.eleman 1.eleman oluyor.
        front=temp;
    }
}


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.
    if(front==NULL){
        printf("Queue is empty!");
    }else{
        temp=front;
        while(temp->next!=NULL){
            printf("%d\t",temp->data);
            temp=temp->next;
        }
        printf("%d\n",temp->data);
        
    }
}

int main(){

    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;
}