List Example with cpp
/ Bağlantılı liste örneği
#include<iostream>
#include<string>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip>
#include<ctype.h>
using namespace std;
#include "Kayit.h"
typedef struct listeDugumu listeDugumu;
typedef listeDugumu *listeDugumuPtr;
void ekle(listeDugumuPtr *,listeDugumu *,int);
void listeyazdir(listeDugumuPtr);
int bosMu(listeDugumuPtr);
void sil(listeDugumuPtr *,int,int);
void menu(void);
void listebosalt(listeDugumuPtr *);
//void listeyibol(listeDugumuPtr *,int);
int main(){
listeDugumuPtr baslangicPtr=NULL;
listeDugumu *kayitPtr;
kayitPtr =new listeDugumu;
int dugumsayisi=0;
int sirano;
menu();
int secim;
cout << "? : ";
cin >> secim;
while(secim!=8){
switch(secim){
case 1 :
cout << "Lutfen eklemek istediginiz kisinin bilgilerini giriniz" << endl;
cout << "Eklenecek ismi giriniz : ";
cin.ignore(1000, '\n');
cin.getline(kayitPtr->isim,AD_UZUNLUK);
cout <<"Eklenecek Telefon numarasi : ";
cin >> setw(TEL_UZUNLUK) >> kayitPtr->tel_numarasi;
cout << endl;
ekle(&baslangicPtr,kayitPtr,dugumsayisi);
listeyazdir(baslangicPtr);
break;
case 2 :
if(!bosMu(baslangicPtr)){
cout << "Silinecek siranoyu giriniz :";
cin >> sirano;
sil(&baslangicPtr,sirano,dugumsayisi);
cout << "Kayit silindi" << endl;
}else
cout << "liste bos" << endl;
break;
case 3 :
listebosalt(&baslangicPtr);
cout << "liste bosaltildi..." << endl;
break;
/*case 4 :
cout << "listeyi kaca bolmek istiyorsunuz ?" << endl;
cin >> kac;
listeyibol(&baslangicPtr,dugumsayisi);
break;
*/
default:
cout << "Yanlis bir giris yaptiniz tekrar giriniz" << endl;
menu();
break;
}
cout << "? : ";
cin >> secim;
}
cout << "program kapatılıyor";
delete kayitPtr;
return EXIT_SUCCESS;
}
void menu(void){
cout << "1-Kayit ekle" << endl;
cout << "2-Kayit sil" << endl;
cout << "3-Listeyi bosalt" << endl;
cout << "4-Listeyi ikiye bol" << endl;
cout << "8-Cikis" << endl;
}
void ekle(listeDugumuPtr *sPtr,listeDugumu *savePtr,int dugum_sayisi){
listeDugumuPtr tara,arka,yeni;
tara=*sPtr;
yeni = new listeDugumu;
*yeni=*savePtr;
yeni->sonrakiPtr=NULL;
if(*sPtr==NULL){
*sPtr=yeni;//ilk düğüm ekleniyor
dugum_sayisi++;
return;
}
if(strcmp(yeni->isim,(*sPtr)->isim)<0)
{
yeni->sonrakiPtr=*sPtr;//Basa ekleniyor
*sPtr=yeni;
dugum_sayisi++;
return;
}
while(tara && strcmp(yeni->isim,tara->isim)>0)
{
arka=tara;
tara=tara->sonrakiPtr;
}
if(tara){
yeni->sonrakiPtr=tara;//araya ekleniyor
arka->sonrakiPtr=yeni;
}
else
arka->sonrakiPtr=yeni;//sona ekleniyor
dugum_sayisi++;
}
void listeyazdir(listeDugumuPtr suandakiPtr){
int i=1;
if(suandakiPtr==NULL)
cout << "Rehber bos" << endl;
else{
cout << "Liste : " << endl;
while(suandakiPtr!=NULL){
cout << i << suandakiPtr->isim << "\t" << suandakiPtr->tel_numarasi << endl;
suandakiPtr=suandakiPtr->sonrakiPtr;
i++;
}
}
}
int bosMu(listeDugumuPtr basPtr){
return basPtr==NULL;
}
void sil(listeDugumuPtr *sPtr,int sira,int dugum_sayisi){
listeDugumuPtr tara,arka;
int sayac=1;
tara=*sPtr;
if(sira<=0){
cout << "yanlis sira no girdiniz" << endl;
return;
}
if(sira==1){
*sPtr=(*sPtr)->sonrakiPtr;
delete tara;
dugum_sayisi--;
return;
}
while(tara && (sayac<sira)){
arka=tara;
tara=tara->sonrakiPtr;
sayac++;
}
if(sayac<sira)
cout << "silinecek kayit bulunamadi" << endl;
else{
arka->sonrakiPtr=tara->sonrakiPtr;
delete tara;
dugum_sayisi--;
}
}
void listebosalt(listeDugumuPtr *sPtr){
listeDugumuPtr tara;
if(*sPtr==NULL)
cout << "liste bos" << endl;
else
while(*sPtr){
tara=*sPtr;
*sPtr=(*sPtr)->sonrakiPtr;
delete tara;
}
}
kayit.h is a header file for liste_example.cpp
#define AD_UZUNLUK 30
#define TEL_UZUNLUK 15
struct listeDugumu{
char isim[AD_UZUNLUK];
char tel_numarasi[TEL_UZUNLUK];
struct listeDugumu *sonrakiPtr;
};
No comments:
Post a Comment