C,C++,C#

Calismalarimdan bazilari :
Parts from my works:

--Ikili agac icin veri yapisinin tanimlanmasi(C)--
--Defining data structure for two branch tree (C)--

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
/*ikili agac icin veri yapisinin tanimlanmasi*/
typedef struct topluluk{
int bilgi;
struct topluluk *sag,*sol;
}IKILIAGAC;

IKILIAGAC *kok=NULL; /*Kok isaretcisi bildirimi ve baslangic degeri verme*/

/*Fonksiyon Bildirimi*/
IKILIAGAC *ara(IKILIAGAC *,int),*sil(IKILIAGAC *,int),*okuKlavye();
int sayAgacDugum(IKILIAGAC *,int);
void yazEkrana(IKILIAGAC *),ekle(IKILIAGAC *,IKILIAGAC *),listele(IKILIAGAC *);

/*Ana Program*/
main()
{
IKILIAGAC *yeni,*adres;
int bilgi,miktar;
char secim;

while(1){
puts("\nE...Ekleme\nL...Listeleme\nA...arama\nS...Silme\nM...
Miktar\nSeciminiz?");
secim=getch();
switch(secim){
case 'e':
case 'E':yeni=okuKlavye();
ekle(kok,yeni);
break;
case 'l':
case 'L':if(kok!=NULL)
listele(kok);
else
puts("Bos Liste!");
break;
case 'a':
case 'A':puts("Aranan:");scanf("%d",&bilgi);
adres=ara(kok,bilgi);
if(adres==NULL)
puts("Aranan Bulunanmadi");
else yazEkrana(adres);
break;
case 's':
case 'S':puts("Silinecek:");scanf("%d",&bilgi);
adres=sil(kok,bilgi);
if(adres!=NULL)
puts("Silindi.");
else
puts("Silinmek istenen bulunamadi.");
break;
case 'm':
case 'M':miktar=sayAgacDugum(kok,0);
printf("Agactaki kayit sayisi=%d\n",miktar);
break;

case 'c':
case 'C':
case '‡':
case '€':puts("Hoþçakal!");
exit(0);
default:puts("Yanlýs Secim!\n");
}/*switch'in sonu*/
}/*while'in sonu*/
}/*Ana Programin sonu*/

/*Bir kayit bilgisini klavyeden okuma ve dinamik olarak yerleþtirme*/
IKILIAGAC *okuKlavye()
{
IKILIAGAC *yeni;
yeni=(IKILIAGAC *)malloc(sizeof(IKILIAGAC));
if(yeni==NULL){
puts("Bellek dolu!");
return NULL;
}
puts("Bilgi Giriniz:");
scanf("%d",&(yeni->bilgi));
yeni->sag=NULL;
yeni->sol=NULL;
return yeni; /*bilginin yerlestirildigi adres g”nderiliyor*/
}
/*Dgm ekleme fonksiyonu*/
void ekle(agacKok,yeni)
{

if(agacKok==NULL)*kok=yeni;
else{
if(yeni->bilgi <= agacKok->bilgi){
if(agacKok->sol=NULL)
agacKok->sol=yeni;
else ekle(agacKok->sol,yeni);
}
else{
if(agacKok->sag=NULL)
agacKok->sag,yeni;
else ekle(agacKok->sag,yeni);
}
}
}
/*Agactaki dgmleri listeleme*/
void listele (IKILIAGAC *agacKok)
{
if(agacKok!=NULL){
listele(agacKok->sol);
yazEkrana(agacKok);
listele(agacKok->sag);
}
}
/*Bir dgm bilgisini ekrana yazar*/
void yazEkrana(IKILIAGAC *veri)
{
printf("%d",veri->bilgi);
}
/*Agac zerinde arama yapilmasi*/
IKILIAGAC *ara(IKILIAGAC *agacKok)
IKILIAGAC *agacKok;
int aranan;
{
while(agacKok!=NULL && agacKok->bilgi!=aranan){
if(aranan<agacKok=agacKok->bilgi)
agacKok=agacKok->sol;
else
agacKok=agacKok->sag;
}
return agacKok;
}
/*Agactan bir dgm silme islemi*/
{
IKILIAGAC *qa,*q,*qc,*sa,*s;

if(agacKok==NULL)return NULL;
q=agacKok;
qa=NULL;
/*Silinenin ve ailesinin adresini bulmak icin*/
while(q!=NULL && q->bilgi!=silinecek){
qa=q;
if(silinecek <= q->bilgi)
q=q->sol;
else
q=q->sag;
}
/*Aranan bulundu mu?*/
if(q==NULL)
return NULL; /*Aranan yok!*/
/*Iki alt cocugu varsa*/
if(q->sol!=NULL && q->sag!=NULL){
s=q->sol;
sa=q;
while(s->sag!=NULL){ /*Sol alt agacin en byk dgm araniyor*/
sa=s;
s=s->sag;
}
q->bilgi=s->bilgi; /*Silinenin stne kopyalama*/
strcpy(q->mesaj,s->mesaj);
q=s;
qa=sa;
}

/*burada q nun en fazla bir cocugu olabilir*/
if(q->sol!=NULL)
qc=q->sag;
else
qc=q->sol;
/*Dgm silme*/
if(q==agacKok) /*Silinecek olan kok m?*/
kok=qc;
else{
if(q==qa->sol)
qa->sol=qc;
else
qa->sag=qc;
}

free(q);
return q;
}
/*Ikili agac zerindeki dgm sayisini sayar*/
int sayAgacDugum(IKILIAGAC *agacKok,int miktar)
{
if(agacKok==NULL)return miktar; /*agac bos ise miktar'i degistirmeden geri gonder*/
miktar++;
miktar=sayAgacDugum(agacKok->sol,miktar);
miktar=sayAgacDugum(agacKok->sag,miktar);
return miktar;
}


 

1 2 3 4 5 6 7 8 9

 

 
 
e-mail : tahircanerb@yahoo.com / tahircanerb@gmail.com