Birinin doğruyu bulmasına yardımcı olan, yol gösteren kimse veya şey, delil.Kelime anlamı budur.Biz burada ise telefon rehberi yapacağız.Bunu pointer ,kok gibi etmenler ile yapacağız.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
typedef struct liste
{
int tel;
char isim[50],soyad[50];
struct liste *sag;
}lst;
lst *kok=NULL,*onceki=NULL,*silme=NULL;
int sayac=0;
void eklenecek(lst *root,lst *ekle)
{
if(root==NULL)
{
kok=ekle;
}
else
{
if(root->sag==NULL)
{
root->sag=ekle;
}
else
{
eklenecek(root->sag,ekle);
}
}
}
void aranacak(lst *root,int ara)
{
if(root->tel==ara)
{
printf("Aradiginiz telefon numarasi bulunmustur!!!");
}
else
{
aranacak(root->sag,ara);
}
}
void listele(lst *root)
{
FILE *dosya;
if((dosya=fopen("rehber.txt","a"))==NULL)
{
printf("Dosya acilamamistir!!");
}
if(root==NULL)
{
printf("Listelenecek eleman bulunamamistir!\n");
}
else
{
if(root!=NULL)
{
printf("%s\n",root->isim);
printf("%s\n",root->soyad);
printf("%d\n",root->tel);
fprintf(dosya,"%s ,%s,%d\n",root->isim,root->soyad,root->tel);
listele(root->sag);
}
}
}
void silinecek(lst *root,int sil)
{
if(root->tel!=sil && root!=NULL)
{
onceki=root;
sayac++;
silinecek(root->sag,sil);
}
else
{
if(root->tel==sil && sayac==0)
{
silme=kok;
kok=kok->sag;
free(silme);
}
else if(root->tel==sil && sayac>0)
{
silme=root;
onceki->sag=root->sag;
free(silme);
}
else if(root->tel==sil && root->sag==NULL)
{ silme=root;
free(silme);
root=onceki;
root->sag==NULL;
}
}
}
int main()
{
system("color 5a");
lst *ekle,*deger;
int secenek;
int ara,sil;
int cikmak;
do
{
geri:
printf("Rehbere eklemek icin --1\nRehberde arama yapmak için --2\nRehberi listelemek için--3\nRehberden silmek icin--4\nRehberden cikmak icin--5\n basiniz..\n");
scanf("%d",&secenek);
switch(secenek)
{
case 1:
ekle=(lst*)malloc(sizeof(lst));
if(ekle==NULL)
{
printf("Ramde eklenecek alan kalmamistir..\n");
}
printf("Adini giriniz..\n");
scanf("%s",ekle->isim);
printf("Soyadini giriniz...\n");
scanf("%s",ekle->soyad);
printf("Telefon numarasini girniz..\n");
scanf("%d",&ekle->tel);
ekle->sag=NULL;
eklenecek(kok,ekle);
break;
case 2:
printf("Aranacak tel numarasini giriniz...\n");
scanf("%d",&ara);
if(kok==NULL)
{
printf("Rehber bostur..\n");
}
else
{
aranacak(kok,ara);
}
break;
case 3:
listele(kok);
break;
case 4:
printf("Silinecek kaydin tel numarasini giriniz.");
scanf("%d",&sil);
if(kok==NULL)
{
printf("Silinecek eleman bulunamamistir..\n");
}
else
silinecek(kok,sil);
break;
case 5:
system("CLS");
exit(0);
break;
default:
printf("Hatali secim yapdiniz...\n");
goto geri;
}
printf("Cikmak icin -1 basiniz..\n");
scanf("%d",&cikmak);
}while(cikmak!=-1);
system("pause");
return 0;
}
0 Yorumlar
Bizimle fikirlerinizi paylaşabilirsiniz.