C ile Bankada Sıra Alma İşlemi (Bağlı Liste ile )

C ile Bankada Sıra Alma İşlemi (Bağlı Liste ile )

Kuyruk yapısı oluşturularak bankadaki müşterilere sıra numarası veren bir program yapalım.

Kuyruk yapısı oluşturularak bankadaki müşterilere sıra numarası veren bir program yapalım.

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

struct node 
{
     char ad[20],soyad[20];
     int hizmet_yilimiz;
     int oncelik_Numarasi;
    struct node *next;
}*front, *rear, *temp;
    
void enqueue(int oncelik_Numarasi,char *ad,char *soyad,int hizmet_yilimiz)
{   
    struct node* newNode=(struct node*)malloc(sizeof(struct node));
    newNode->oncelik_Numarasi=oncelik_Numarasi;
    
    strcpy(newNode->ad,ad);
     strcpy(newNode->soyad,soyad);
    
    newNode->hizmet_yilimiz=hizmet_yilimiz;
    newNode->next=NULL;
    
    struct node *prevTemp;
    if(front==NULL)
        front=rear=temp=newNode;
        else if(newNode->oncelik_Numarasi>=rear->oncelik_Numarasi)
        {
            rear->next=newNode;
            rear=newNode;
            return;
        }
            else if(newNode->oncelik_Numarasi>temp->oncelik_Numarasi)
        {
            while(1)
            {
                temp=temp->next;
                if(prevTemp->oncelik_Numarasi<newNode->oncelik_Numarasi&&temp->oncelik_Numarasi>newNode->oncelik_Numarasi)
                {
                    prevTemp->next=newNode;
                    newNode->next=temp;
                    temp=prevTemp=front;
                    break;
                }
                else if(prevTemp->oncelik_Numarasi<newNode->oncelik_Numarasi&&temp->oncelik_Numarasi==newNode->oncelik_Numarasi)
                {
                    while(temp->oncelik_Numarasi==newNode->oncelik_Numarasi)
                    {
                        prevTemp=temp;
                        temp=temp->next;
                    }
                    prevTemp->next=newNode;
                    newNode->next=temp;
                    break;
                }
                else
                prevTemp=temp;
            }
            temp=prevTemp=front;
        }        
        else if(newNode->oncelik_Numarasi<temp->oncelik_Numarasi)
        {
            newNode->next=front;
            front=temp=newNode;
            return;
        }
        else if(newNode->oncelik_Numarasi==temp->oncelik_Numarasi)
        {
            while(newNode->oncelik_Numarasi==temp->oncelik_Numarasi)
            {
                prevTemp=temp;
                temp=temp->next;
            }
            prevTemp->next=newNode;
            newNode->next=temp;                                                                            
            temp=prevTemp=front;
            return;
        }
    
}

     
void dequeue()
{
    if(front==NULL)
    {
    printf("Musteri Yok!!!nnn");
    return;
    }
    else
    {
        struct node *temp=front;
        front=front->next;
        printf("nSiradaki musteri:nnnn");
        printf("tOncelik Numarasi:t%d",temp->oncelik_Numarasi);
        printf("ntAdi:ttt%s",temp->ad);
        printf("ntSoyadi:ttt%s",temp->soyad);
        printf("ntHizmet_yilimiz:ttt%dnn",temp->hizmet_yilimiz);
        free(temp);
    }
}
     
void display()
{
    int i;
    if(front==NULL)
    {
        printf("nKuyruk bos....");
        return;
    }
    struct node *der=front;
    printf("nSiradaki musteriler:nnnn");
    while(der!=NULL)
    {
        printf("tOncelik Numarasi:t%d",der->oncelik_Numarasi);
        printf("ntAdi:ttt%s",der->ad);
        printf("ntSoyadi:ttt%s",der->soyad);
        printf("ntHizmet_yilimiz:ttt%dnn",der->hizmet_yilimiz);
        der=der->next;
        
    }
    printf("nn");
}
    
void main()
{
    int secim, oncelik_Numarasi,hizmet_yilimiz=0;
    char ad[20],soyad[20];
    front=rear=NULL;
    do
    {
        printf("n 1. Yeni gelen musteri kaydi");
        printf("n 2. Siradaki musteriyi Cagir");
        printf("n 3. musteri Listesi ");
        printf("n 4. Cikis");
     
        printf("n Seciniz:");
        scanf("%d",&secim);
        printf("nn");
     
        switch(secim)
        {
            case 1:
                printf("0-)Engelli musterilerimiz...n");
                printf("1-)10 yil ve üzeri bizimle olan musterilerimiz...n");
                printf("2-)Bankamizin hesabi olan musterilerimiz...n");
                printf("3-)Musteri temsilcisi ile gorusmek icin...n");
                
                printf("nLutfen islem yapmak icin Secim Yapiniz!!! : ");
                scanf("%d",&oncelik_Numarasi);
                
                printf("Adi: ");
                scanf("%s",ad);
                
                printf("nSoyadi: ");
                scanf("%s",soyad);
            
                printf("nhizmet_yilimiz: ");
                scanf("%d",&hizmet_yilimiz);
                
                enqueue(oncelik_Numarasi,ad,soyad,hizmet_yilimiz);
                display();
                break;
                   case 2:
                dequeue();
                break;
            case 3:
                display();
                break;
            case 4:
                printf("isleminiz bitiyor!!!");
                getch();
                //exit(0);
        }
    }while(secim!=4);
    system("color ce");
}


     
   
 

Muhammet Hasan Güngör
Orta Doğu Teknik Üniversitesi Bilgisayar Mühendisliği
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git