#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct araba {
        araba *next;
        int data;       
};

typedef struct parkslot {
               araba * root;
        
        };

araba * ekle(araba* root, int eklenecek){
            araba * temp = ( araba *) malloc(sizeof(araba));
            temp->data = eklenecek;
            temp->next = root;
            root=temp;
            return temp;      
}

araba * sil (araba * root){
            araba * temp = root->next;
            free(root);
            return temp;            
}

void eklesil(parkslot *p1, parkslot* p2){
     p2->root=ekle(p2->root,p1->root->data);
     p1->root=sil(p1->root);
}
        
araba * ara ( araba* root, int aranan){
        araba * iter=root;
        while(iter->next!= NULL){
                           if(iter->data==aranan){
                                                 return iter;
                           }
                           iter= iter->next;
      
      }
      if(iter->data == aranan){
                    return iter;              
      }
      return NULL;
}
 
void goster(araba *root){
      araba * iter=root;
      
        while(iter!= NULL){
                           printf("%d - ",iter->data);
                           iter= iter->next;
      
      }
     
     printf("\n");
     }      
int main(){
    parkslot p1;
    parkslot p2;
    parkslot p3;
    p1.root=NULL;
    p2.root=NULL;
    p3.root=NULL;
    int secim=0;
    while(secim!=-1){
     printf("Lutfen seçiminizi giriniz: \n1. araba girişi\n2. araba çıkışı\n3. Slotları göster\n-1. Çıkış\n");
     scanf("%d",&secim);
     if(secim==1){
                  printf("Lutfen plakasını giriniz:");
                  int plaka;
                  scanf("%d",&plaka);
                  p1.root=ekle(p1.root,plaka);
     }
     else if (secim == 2){
                    printf("Lutfen plakasini giriniz:");
                    int plaka;
                    scanf("%d",&plaka);
                    araba* bulunan = ara(p1.root,plaka);
                    if(bulunan!=NULL){
                            while(p1.root->data!=plaka){
                             eklesil(&p1,&p2);  
                            }
                            p1.root=sil(p1.root);                         
                    }
                    else{
                         bulunan = ara(p2.root,plaka);
                         if(bulunan!=NULL){
                            while(p2.root->data!=plaka){
                             eklesil(&p2,&p3);  
                            }
                            p2.root=sil(p2.root);             
                         }
                         else{
                              bulunan = ara(p3.root,plaka);
                              if(bulunan!=NULL){     
                                    while(p3.root->data!=plaka){
                                     eklesil(&p3,&p1);  
                                    }
                                    p3.root=sil(p3.root);                   
                              }
                              else {
                                   printf("otoparkta bu arac yok");     
                              }
                         }
                    }
                    
     }
     else if(secim==3){
          goster(p1.root);
          goster(p2.root);
          goster(p3.root);
     }
    }
    /*
    p1.root=ekle(p1.root,10);
   p1.root=ekle(p1.root,50);
   p1.root=ekle(p1.root,60);
   p1.root=sil(p1.root);
   eklesil(&p1,&p2);
    eklesil(&p2,&p3);
    p2.root=ekle(p2.root,20);
    p3.root=ekle(p3.root,30);
    */
    getch();
 return 0;   
}
        
        
        
        
        
        
        
        
        

