1 Ocak 2016 Cuma

Veriyapıları 3// C++ - İkili arama ağacı -Bağlı liste - ağac içinde liste yapısı

Header Dosyaları 
/** 
* @file agacdugum
* @description agacdugum sınıfı başlık dosyası agac dugumleri ve agac içinde liste oluşturulmuştur
* @course Bilgisayar Mühendisliği A grubu 2.öğretim
* @assignment 3.ödev
* @date 19.12.2015
* @author Ahmet YENEN   - yenenahmet@hotmail.com
*/
#ifndef agacdugum_H 
#define agacdugum_H

#include
#include
#include "conio.h"
#include "string.h"
#include

#include "list.h"
using namespace std;

class agacdugum {
private:
string veri;
agacdugum *sol;
agacdugum *sag;
list *markalar;
public:

agacdugum(const string& vr, const string& marka) {
veri = vr;
markalar = new list();
markalar->ekle(marka);
sol = NULL;
sag = NULL;
}
~agacdugum() {
delete markalar;
}
string getDugumVeri() {
return veri;
}
agacdugum*& getDugumSol() {
return sol;
}
agacdugum*& getDugumSag() {
return sag;
}
list*& getmarkalar() {
return markalar;
}
void setDugumVeri(string vr) {
veri = vr;
}
void setDugumSol(agacdugum* sl) {
sol = sl;
}
void setDugumSag(agacdugum* sg) {
sag = sg;
}
};
#endif
------------------------------------------
/** 
* @file dugumListe
* @description dugumListe başlık  dosyası liste için dugum oluşturulmuştur
* @course Bilgisayar Mühendisliği A grubu 2.öğretim
* @assignment 3.ödev
* @date 19.12.2015
* @author Ahmet YENEN   - yenenahmet@hotmail.com
*/
#ifndef dugumListe_H 
#define dugumListe_H
#include
#include
#include "conio.h"
#include "string.h"
#include
using namespace std;
class dugumListe{
private:
string data;
dugumListe *next;
public:
dugumListe() {
next = NULL;
}
dugumListe*& getnext() {
return next;
}
string getveri() {
return data;
}
void setveri(string a) {
data = a;
}
};
#endif
-----------------------------------------------------
/** 
* @file ikiliaramaAgaci
* @description ikiliaramaAgaci başlık  dosyası , agac ekle agac içinde listeye eklemeişlemleri inorder postorder preorder işlemleri gerçekleştirilmiştir
* @course Bilgisayar Mühendisliği A grubu 2.öğretim
* @assignment 3.ödev
* @date 19.12.2015
* @author Ahmet YENEN   - yenenahmet@hotmail.com
*/
#ifndef ikiliaramaAgaci_H 
#define ikiliaramaAgaci_H

#include
#include
#include "conio.h"
#include "string.h"
#include
#include "agacdugum.h"
using namespace std;
class ikiliaramaAgaci {
private:
agacdugum *root;
void AraveEkle(agacdugum *&alt_Dugum, const string &yeni, const string &markayeni) {
if (alt_Dugum == NULL) {
alt_Dugum = new agacdugum(yeni, markayeni);
}
else if (yeni < alt_Dugum->getDugumVeri())
AraveEkle(alt_Dugum->getDugumSol(), yeni, markayeni);
else if (yeni == alt_Dugum->getDugumVeri())
alt_Dugum->getmarkalar()->ekle(markayeni);
else if (yeni > alt_Dugum->getDugumVeri())
AraveEkle(alt_Dugum->getDugumSag(), yeni, markayeni);
}
void postorder(agacdugum *alt_Dugum) const{
if(alt_Dugum != NULL){
postorder(alt_Dugum->getDugumSol());
postorder(alt_Dugum->getDugumSag());
cout<getDugumVeri()<
alt_Dugum->getmarkalar()->listele();
cout<
}
}
void inorder(agacdugum *alt_Dugum) const {
if (alt_Dugum != NULL) {
inorder(alt_Dugum->getDugumSol());
cout << alt_Dugum->getDugumVeri() << endl;
alt_Dugum->getmarkalar()->listele();
cout << endl;
inorder(alt_Dugum->getDugumSag());
}
}
void preorder(agacdugum *alt_Dugum) const{
if(alt_Dugum != NULL){
cout<getDugumVeri()<
alt_Dugum->getmarkalar()->listele();
cout<
preorder(alt_Dugum->getDugumSol());
preorder(alt_Dugum->getDugumSag());
}
}
public:
ikiliaramaAgaci() {
root = NULL;
}
void inorder()const {
inorder(root);
}
void postorder()const{
inorder(root);
}
void preorder()const{
inorder(root);
}
void ekle(const string &yeni, const string &marka) {
AraveEkle(root, yeni, marka);
}
};
#endif
------------------------------------------------------
/** 
* @file list
* @description list başlık  dosyası , listeye ekleme işlemleri gerçekleştirilmiştir
* @course Bilgisayar Mühendisliği A grubu 2.öğretim
* @assignment 3.ödev
* @date 19.12.2015
* @author Ahmet YENEN   - yenenahmet@hotmail.com
*/
#ifndef list_H 
#define list_H
#include
#include
#include "conio.h"
#include "string.h"
#include
#include "dugumListe.h"
using namespace std;
class list {
private:
dugumListe *head;
public:
list() {
head = NULL;
}
void ekle(string a) {
dugumListe* pnew = new dugumListe;
pnew->setveri(a);
dugumListe *tmp = head;

if (head == NULL)
head = pnew;
else
{
while (tmp->getnext() != NULL)
tmp = tmp->getnext();

tmp->getnext() = pnew;
}

}
void listele() {
dugumListe* p1 = head;
cout<<"\t";
while (p1 != NULL) {
cout << p1->getveri() << " ";
p1 = p1->getnext();
}

cout << endl;
}
};

#endif
-------------------------------------------------------------
KAYNAK DOSYALARI
#include "agacdugum.h"
#include "dugumListe.h"
#include "ikiliaramaAgaci.h"
#include "list.h"
----------------------------------------------
MAİN
+++
/** 
* @file Main
* @description Program txt den okuma işlemleri gerçekleştirilip ilgili clasa yönledirimyapılır ve  enson inorderpost order ve preorderlar ekrana bsılır
* @course Bilgisayar Mühendisliği A grubu 2.öğretim
* @assignment 3.dev
* @date 19.12.2015
* @author Ahmet YENEN   - yenenahmet@hotmail.com
*/


#include
#include
#include "conio.h"
#include "string.h"
#include

#include "dugumListe.h"
#include "ikiliaramaAgaci.h"
using namespace std;
int main(int argc, char** argv) {
setlocale(LC_ALL, "Turkish");
ikiliaramaAgaci *yenikayit = new ikiliaramaAgaci();
string marka;
string yeni;
ifstream oku("örnek.txt");
while (!oku.eof()) {
oku >> yeni >> marka;
yenikayit->ekle(yeni, marka);
}
cout<<"inorder Yazim:"<
yenikayit->inorder();
cout<
cout<<"postorder Yazim:"<
yenikayit->postorder();
cout<
cout<<"preorder Yazim:"<
yenikayit->preorder();
//system("pause");
//return 0;
delete yenikayit;
}
---------------------------------------------------------
MİNGW  GCC DE DERLENMİŞRİR ......


ÖRNEK.TXT +

Anakartlar AMD
Bellekler DDR3L
Bellekler DDRE4
Islemciler AMD
Bellekler DDR2
Anakartlar Intel
Bellekler DDR3
Islemciler Intel

Hiç yorum yok:

Yorum Gönder