Graf Algoritma C++ Kodu
#include<iostream>
using namespace std;
// Graf veri yapisi kodum
struct Dugum
{
int veri;
Dugum *baglanti;
Dugum(int veri)
{
this->veri=veri;
baglanti=NULL;
}
};
struct BagliListe
{
Dugum *bas;
BagliListe()
{
bas=NULL;
}
};
struct Graf
{
int tepeSayisi; // Kose/tepe (vertex) sayisi
BagliListe *tepeListeleri; // Her bir tepeye bagli diger tepelerin listesi (bagli liste yapilari icinde tutuyoruz)
Graf(int tepeSayisi)
{
this->tepeSayisi=tepeSayisi;
tepeListeleri=new BagliListe[tepeSayisi];
}
void kenarEkle(int ilkUctaki, int ikinciUctaki) // iki tepeyi birbirine baglayan bir kenar (edge)
{
// Tepelerin bagli oldugu tepeleri tutacak olan bagli listelere ekleme yapacagiz
Dugum *yeniDugum1=new Dugum(ilkUctaki);
Dugum *yeniDugum2=new Dugum(ikinciUctaki);
ilkUctaki--; ikinciUctaki--; // indisleri sifirdan basladigi icin
if(tepeListeleri[ilkUctaki].bas==NULL)
tepeListeleri[ilkUctaki].bas=yeniDugum2;
else
{
yeniDugum2->baglanti=tepeListeleri[ilkUctaki].bas;
tepeListeleri[ilkUctaki].bas=yeniDugum2;
}
if(tepeListeleri[ikinciUctaki].bas==NULL)
tepeListeleri[ikinciUctaki].bas=yeniDugum1;
else
{
yeniDugum1->baglanti=tepeListeleri[ikinciUctaki].bas;
tepeListeleri[ikinciUctaki].bas=yeniDugum1;
}
}
};
int main()
{
int tepeS,kenarS;
cout<<"Tepe sayisini giriniz: ";
cin>>tepeS;
Graf *g=new Graf(tepeS);
cout<<"Kenar sayisini giriniz: ";
cin>>kenarS;
int dugumNo1,dugumNo2;
for(int i=0; i<kenarS; i++)
{
cout<<i+1<<". kenarin bagladigi iki tepeyi giriniz: ";
cin>>dugumNo1>>dugumNo2;
g->kenarEkle(dugumNo1,dugumNo2);
}
// Olusturulan grafin tepelerini ve baglantilarini goruntuleyelim:
cout<<endl<<endl<<"Olusturulan graf: "<<endl;
for(int i=0;i<tepeS;i++)
{
cout<<"Tepe["<<i+1<<"]\t{ ";
Dugum *d=g->tepeListeleri[i].bas;
while(d!=NULL)
{
cout<<d->veri<<" ";
d=d->baglanti;
}
cout<<"}"<<endl;
}
}
2 Thoughts on Veri Yapıları Graf Örneği C++ Kodu
Merhaba ben c++ Grapf konusunda özel ders almak istiyorum. Saatlik 200 TL ödeyebilirim. Yaklaşık 20 ders almayı planlıyorum. Eğer ders verebilirseniz bana bu mail adresinden ulaşın lütfen. akarn2310@gmail.com
Ders vermemekteyim, sorularınızı aydin@atanur.net adresine mail atabilirsiniz.