Skip to content

Instantly share code, notes, and snippets.

@Rahajustone
Created May 19, 2014 10:47
Show Gist options
  • Save Rahajustone/4489cb2f9d12b5a0dd3e to your computer and use it in GitHub Desktop.
Save Rahajustone/4489cb2f9d12b5a0dd3e to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
typedef struct topluluk {
int bilgi;
char mesaj[100];
struct topluluk *sag, *sol;
}AGAC;
AGAC *kok=NULL;
AGAC *ara();
AGAC *okuKlavye();
void *sil();
void yazekrana();
void ekle();
void listele();
int main(int argc, char const *argv[])
{
AGAC *yeni,*adres;
int bilgi,miktar;
char secim;
while(1)
{
printf("Seçeneklerden seçin hangi işlemi yapmak istediğinizi");
puts("\n1)Eklem:2)Listeleme:3)Arama:4)Sil butunu Ağaci 5)Cikis :\n Hangi işlemi seçme istiyorsaniz yaziniz ");
secim=getchar();
switch(secim)
{
case 'E':
yeni=okuKlavye();
ekle(kok,yeni);
break;
case 'L':
if(kok!=NULL)
listele(kok);
else
puts("Boş Listele");
break;
case 'A':puts("Aranan elemani giriniz");scanf("%d",&bilgi);
adres=ara(kok,bilgi);
if(adres==NULL)
puts("Aranan elemani bulunmadi");
else yazekrana(adres);
break;
case 'S':puts("Butun Ağaci silinecek");
sil();
case 'C':puts("Hoşçakalin");
default:puts("Yanliş seçim giridiniz");
}
}
return 0;
}
void ekle(AGAC *agacKok,AGAC *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);
}
}
}
AGAC *ara(AGAC *agacKok,int aranan)
{
while((agacKok!=NULL)&&(agacKok->bilgi!=aranan))
{
if(aranan<agacKok->bilgi)
agacKok=agacKok->sol;
else
agacKok=agacKok->sag;
}
return agacKok;
}
void yazekrana(AGAC *veri)
{
printf("bilgi:%d,mesaj:%s\n",veri->bilgi,veri->mesaj);
}
AGAC *okuKlavye()
{
AGAC *yeni;
yeni=malloc(sizeof(AGAC));
if(yeni==NULL)
{
puts("Bellek dolu");
return NULL;
}
puts("Bilgiye giriniz");
scanf("%d",&(yeni->bilgi));
puts("Mesaj Giriniz");
scanf("%c",yeni->mesaj);
yeni->sol=NULL;
yeni->sag=NULL;
return yeni;
}
void listele(AGAC *agacKok)
{
if(agacKok != NULL){
listele(agacKok->sol);
yazekrana(agacKok);
listele(agacKok->sag);
}
}
void *sil( AGAC *agacKok)
{
if(agacKok!=NULL)
free(agacKok);
sil(agacKok->sag);
sil(agacKok->sol);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment