http://www.tomoca.co.jp/

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct agac{
        int eleman;
        struct agac *sag,*sol;
        }agaclar;
agaclar *kok=NULL;
 
void ekle(agaclar *agackok,agaclar *yeni)
{
     if(agackok==NULL)
     {
         kok=yeni;
     }
     else
     {
         if(yeni->eleman<agackok->eleman)
         {
             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);
         }
     }
}
void listele(agaclar *agackok)
{
     if(agackok!=NULL)
     {
        listele(agackok->sol);
        printf("%d\n",agackok->eleman);
        listele(agackok->sag);
     }
}
agaclar *ara(agaclar *agackok,int aranan)
{
     while(agackok!=NULL&&agackok->eleman!=aranan)
     {
           if(aranan<(agackok->eleman))
               agackok=agackok->sol;
           else
               agackok=agackok->sag;
     }
     return agackok;
}
agaclar *buyuk_bul(agaclar *agackok)
{
      if(agackok->sag==NULL)
                return agackok;
      else
           return buyuk_bul(agackok->sag);  
}
/*agaclar *buyuk_bul()
{
    agaclar *gecici;
    gecici=kok;
    while(gecici!=NULL)
    {
         if(gecici->sag!=NULL)
         {
              gecici=gecici->sag;
         }
         return gecici;
    }     
}*/
void yapraklari_sirala(agaclar *agackok)
{
     int dizi[10],i=0,j;
     agaclar *gecici,*parent;
     //gecici=kok;
     if(agackok!=NULL)
     {
         if(agackok->sol==NULL)
         {
            dizi[i]=agackok->eleman; 
            i++;
         }
         for(j=0;j<i;j++)
         {
            printf("%d\n",dizi[j]);
         }
     }                    
}
int seviye_bul(agac *k){
    if(k->sol==NULL && k->sag==NULL)return 0;
    int sol=0,sag=0;
    if(k->sol!=NULL)  sol=seviye_bul(k->sol);
    if(k->sag!=NULL)  sag=seviye_bul(k->sag);
    return 1+(sol>sag?sol:sag);
}
 
void sondanYaz(agac *k) {
    void seviyeYaz(agac *k, int sev);
    int i;
    for(i=seviye_bul(k);i>=0;i--)seviyeYaz(k,i);
}
 
void seviyeYaz(agac *k, int sev) {
    if(k==NULL)return;
    if(sev==0)printf("%d ",k->eleman);
    else{
        seviyeYaz(k->sol,sev-1);
        seviyeYaz(k->sag,sev-1);
    }
} 
int main()
{
     agaclar *yeni,*adres;
     char secim;
     int sayi;
     while(1)
     {
             puts("\n***MENU***\nekleme-->e\nlisteleme-->l\narama-->a\nbuyuk elemani bulma-->b\nyapraklari sirala-->y\nseviye-->s\ncikis-->c\nseciminiz:?\n");
             secim=getch();
             switch(secim)
             {
                      case 'e':yeni=(agaclar*)malloc(sizeof(agaclar));
                               if(yeni==NULL)
                               {
                                   puts("bellek dolu kardesss");
                               }
                               puts("agaca eklenecek sayiyi giriniz:");
                               scanf("%d",&(yeni->eleman));
                               yeni->sag=NULL;
                               yeni->sol=NULL;
                               ekle(kok,yeni);
                               break;
                      case 'l':if(kok!=NULL)
                                  listele(kok);
                               else
                                  puts("liste bos ya neyi listeleyecen kardesss");
                               break;
                      case 'a':puts("agacta aranacak sayiyi giriniz:");
                               scanf("%d",&sayi);
                               adres=ara(kok,sayi);
                               if(adres==NULL)
                               {
                                   puts("aranan kayit bulunamadi");
                               }
                               else
                               {
                                   printf("sayi=%d",adres->eleman);
                               }
                               break;
                      case 'b':agaclar *buyuk;
                               buyuk=buyuk_bul(kok);
                               printf("en buyuk=%d",buyuk->eleman);
                               break;
                      case 'y':yapraklari_sirala(kok);
                               break;
                      case 's':agaclar *seviye;
                               seviye_bul(kok);
                               //seviye=sondanYaz(kok);
                               printf("seviye=%d",seviye->eleman);
                               break;
                      case 'c':exit(0);
                      default:printf("yanlis secim girdiniz!");
             }
     }
}

 Bu örnek http://www.gaarchery.org/ kullanıcımız tarafından gönderilmiştir. Siz de kodunuzu göndermek isterseniz read thisa yazabilirsiniz.

click to read more
  • Henüz hiç yorum yok