bağlı liste ile bankalardaki kuyruk sistemi

tarrasque01
24-01-2011, 18:23   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Oca 2011

merhaba arkadaşlar ben bağlı liste ile bankalardaki kuyruk sistemini tasarlamak istiyorum.mesela normal müşterilere 100 lü bir sıra nosu verirken özel müşterilere başlardan sıra numarası verecek.yardımcı olursanız çok memnun olurum.saygılar

muh34
28-01-2011, 16:05   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

Bagli liste veri modeli,ilgili data grubu icerisindeki verilerin birbirlerine tren zinciri gibi bagli oldugu bir modeldir.C veya C++ programlama dili acisindan dusunuldugu zaman bir bagli liste isaretçi(pointer) veya dizi(array) uzerine insa edilebilir.Yukaridaki soruda bir banka sistemi icerisindeki sira yapisinin bagli liste uzerinde kurgulanmasi istenmistir.Bilindigi uzere diziler ayni veri toplulugunu tek bir yapi altinda toplayabilen bir veri yapisidir ve icerisinde bulundurdugu her eleman ise genellikle sirali indexler mantiginda tutulmaktadir.Problemi dizi uzerinde insa etmeye calisirsak,her bir musteri _id degeri dizinin index numarasini referans alabilir.Dizi icerisindeki degerler ise,musterilerin herhangi bir bilgisini barindirabilir.O halde yapilmasi gereken ilk islem(operation) kuyruk dizisinin banka yapisi icerisinde kurgulanmasidir,akabinde ise banka dizisi icin musteri kayitlarini gerceklestiren bir fonksiyon(function) yazilmasidir.Banka yapisi icerisinde tasarlanacak kuyruk bilesenleri icerisinde,kuyrugu simgeleyen bir dizi,herbir musterinin kuyruk numarasini belirleyen bir id,musterinin kimlik numarasi gibi ozel bir bilgisini saklayan data ve bankadaki toplam musteri sayisini tutan bir count degiskeni yaratilabilir.Anlatilan bu kuyruk modeli kod satirlari icerisinde gorulmektedir.
Kurgu geregince,bir bankaya gelen musteri sayet 'siradan' bir musteri ise,mevcut sira numarasini alirken,'özel' bir musteri oldugunda istege bagli bir sira numarasiyla listenin istenilen bir konumuna gececektir.Program yazilmadan once ikinci bir kurgu olan,her bir musteri gerekli islemini gerceklestirdikten sonra kuyruktan ayrilacaktir.Dolasiyiyla toplam musteri sayisinda her ayrilan icin -1 degeri isleyecektir.Son olarak kuyrukta bekleyen her bir musteriyi goruntulemek istedigimizde dizinin elemanlarini bastirmak yeterli olacaktir.Bu fonksiyonlarıda programımıza dahil ettigimizde,
algoritmanin C dilindeki karsiligi asagidaki gibi olacaktır.
 
#include <stdio.h>
#include <conio.h>
struct bank {
      
       enum { max=100};
       int customerArr[max];
       int id;
       int data;
       int numberOfCustomer;
      
       };
      
void customerAdd(bank *akbank) {
    
     printf("Queue number is %d\n",akbank->numberOfCustomer);
     printf("Are you enter to the customer id 1/0 ? \n");
     int secenek=0;
     scanf("%d",&secenek);
     if(secenek)
     {
     printf("Enter the customer id please\n");
     scanf("%d",&akbank->id);
     if(akbank->id < 10)
     for(int i=akbank->numberOfCustomer-1;i>=akbank->id;i--)
     akbank->customerArr[i+1]=akbank->customerArr;
     akbank->numberOfCustomer++;
     }
     printf("Enter to the customer data please\n");
     scanf("%d",&akbank->data);
     if(!secenek)
     akbank->id=akbank->numberOfCustomer++;
     akbank->customerArr[akbank->id]=akbank->data;
     }
    
void runned(bank *akbank) {
    
     akbank->numberOfCustomer--;
     for(int i=0;i<akbank->numberOfCustomer;i++)
     akbank->customerArr=akbank->customerArr[i+1];
     printf("The operation was complete\n");
     }
    
void printCustomers(bank *akbank) {
    
     printf("The customers who were waiting Akbank\n");
     for(int i=0;i<akbank->numberOfCustomer;i++)
     printf("%d-%d * ",i+1,akbank->customerArr);
     }
int main() {
   
    bank akbank;
    akbank.numberOfCustomer=0;
    customerAdd(&akbank);
    customerAdd(&akbank);
    customerAdd(&akbank);
    customerAdd(&akbank);
    runned(&akbank);
    printCustomers(&akbank);
    getch();
    return 0;  
}

Başarılar

Son Düzenleme: muh34 ~ 28 Ocak 2011 16:14
tarrasque01
01-02-2011, 23:56   |  #3  
OP Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Oca 2011

çok teşekkür ederim abi henüz inceleme fırsatım olmadı en kısa zamanda bakıp anlamadığım yer olursa danışıcam