Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 1
Регистрация: 12.10.2015
Сообщений: 13
1

Подключение к бинарному дереву списка

20.10.2015, 20:23. Показов 443. Ответов 1
Метки нет (Все метки)

Вот есть такой вот код. Не могу подключить к моему узлу бинарного дерева односвязный список

Кто-то может помочь?


// dataBase_GAI_(binary tree).cpp : Defines the entry point for the console application.
//
// HomeWork_database_GAI.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#pragma warning (disable:4996)
using namespace std;

class Receipt //квитанция
{

public:
char *description; //описание нарушения
char *date; //дата получение квитанции
char *surname; //фамилия
char *name; //имя
char* patronymic; //отчество
Receipt *next; //указатель на следующее нарушение
Receipt() : //конструктор по умолчанию
description(NULL),
date(NULL),
surname(NULL),
name(NULL),
patronymic(NULL),
next(NULL) {}
Receipt(char* description, char* date, char* surname, char* name, char* patronymic)
{
next = NULL;
this->description = new char[strlen(description) + 1];
strcpy(this->description, description);
this->date = new char[strlen(date) + 1];
strcpy(this->date, date);
this->surname = new char[strlen(surname) + 1];
strcpy(this->surname, surname);
this->name = new char[strlen(name) + 1];
strcpy(this->name, name);
this->patronymic = new char[strlen(patronymic) + 1];
strcpy(this->patronymic, patronymic);
}
~Receipt() //деструктор
{
delete[] description;
delete[] date;
delete[] name;
delete[] patronymic;
}
friend ostream& operator << (ostream&stream, Receipt& obj);

//методы полей
//описание штрафа
/*void addDescription(char* description)
{
this->description = description;
}
char* getDescription()
{
return description;
}
//дата получения штрафа
void addDate(char* date)
{
this->date = date;
}
char* getDate()
{
return date;
}
//фамилия
void addSurname(char* surname)
{
this->surname = surname;
}
char* getSurname()
{
return surname;
}
//имя
void addName(char* name)
{
this->name = name;
}
char* getName()
{
return name;
}
//отчество
void addPatronymic(char* patronymic)
{
this->patronymic = patronymic;
}
char* getPatronymic()
{
return patronymic;
}
*/
};
//перегрузка вывода
ostream& operator << (ostream&stream, Receipt& obj)
{
stream << "Description: " << obj.description << endl
<< "Date: " << obj.date << endl
<< "SNP: " << obj.surname << " " << obj.name << " " << obj.patronymic << endl;
return stream;
}

class ListOffences:Receipt //список правонарушений
{
public:
int count; //подсчёт элементов списка
Receipt* head; //указатель на начало списка
Receipt* tail; //указатель на конец списка
ListOffences() :
head(NULL),
tail(NULL),
count(0) {}
~ListOffences() {}
void addData(char* description, char* date, char* surname, char* name, char* patronymic);
void showData();
friend ostream& operator << (ostream&stream, ListOffences& obj);

};
ostream& operator << (ostream&stream, ListOffences& obj)
{
Receipt* cur = obj.head;
while (cur != NULL)
{
cout << *cur << endl;
cur = cur->next;
}
return stream;
}
void ListOffences::addData(char* description, char* date, char* surname, char* name, char* patronymic)
{
Receipt* tmp = new Receipt(description, date, surname, name, patronymic);
if (!head) //если список пуст
{
head = tail = tmp;
}
else
{
tail->next = tmp;
tail = tmp;
}
count++;
}
void ListOffences::showData()
{
cout << "Description: " << description << endl
<< "Date: " << date << endl
<< "SNP: " << surname << " " << name << " " << patronymic << endl;
}

class Leaf
{


public:
ListOffences list;
int key; //будет номером авто
Leaf()
{

}
void addFine(char* description, char* date, char* surname, char* name, char* patronymic)
{
list.addData(description, date, surname, name, patronymic);
}
void showFines()
{
cout << list << endl;
}
~Leaf();
Leaf *left;
Leaf *right;
Leaf *parent;
Leaf(int k);
operator int();
bool operator<(const Leaf & right);
bool operator>(const Leaf & right);
bool operator==(const Leaf& right);
friend ostream& operator<<(ostream& stream, Leaf& l);
};

Leaf::~Leaf()
{

}


Leaf::Leaf(int k)
{
left = right = parent = NULL;
key = k;
}


bool Leaf::operator<(const Leaf & right)
{
return key < right.key;
}


bool Leaf::operator>(const Leaf & right)
{
return key > right.key;
}


bool Leaf::operator==(const Leaf& right)
{
return key == right.key;
}

Leaf::operator int()
{
return key;
}

ostream& operator<<(ostream& stream, Leaf& l)
{
stream << l.key;

return stream;
}

class dataBase // бинарное дерево поиска
{
Leaf *root;
int count;
void addItem(Leaf *cur, Leaf *new_item) //root, tmp
{
if (*new_item < *cur) // куда вставлять в левую ветвь или в правую
{
if (!cur->left) // левый потомок отсутвует т.е. место вставки найдено
{
cur->left = new_item;

new_item->parent = cur;
}
else // иначе производим рекурсивный поиск в левой ветви
{
addItem(cur->left, new_item);
}
}
else
{
if (!cur->right) // правый потомок отсутвует т.е. место вставки найдено
{
cur->right = new_item;
new_item->parent = cur;
}
else // иначе производим рекурсивный поиск в правой ветви
{
addItem(cur->right, new_item);
}
}
}

void showTree(Leaf *cur)
{
if (cur)
{
showTree(cur->right);
cout << *cur << " ";
showTree(cur->left);
}

}

int getMax(Leaf *cur)
{
if (cur->right)
{
return getMax(cur->right);
}
return *cur;
}

void cleanTree(Leaf* cur)
{
if (cur)
{
cleanTree(cur->right);
cleanTree(cur->left);
delete cur;
}
}

public:
dataBase() : root(NULL), count(0)
{}

bool getMax(int &res)
{
if (root)
{
res = getMax(root);
return false; // ошибок нет т.к. найден максимальный элемент
}
return true; // ошбика т.к. список пуст
}

void addItem(int item)
{
Leaf *tmp = new Leaf(item);
if (!root)
{
root = tmp;
}
else
{
addItem(root, tmp);
}
count++;
}

void showTree()
{
showTree(root);
cout << endl;
}

~dataBase()
{
cleanTree(root);
}

};





int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");

ListOffences usVS;
usVS.addData("Проезд на красный свет", "29.10.2014", "Пупкин", "Василий", "Сергеевич");
usVS.addData("Не пропустил пешехода", "01.04.2014", "Пупкин", "Василий","Сергеевич");

//cout << usVS << endl;
dataBase p;
p.addItem(5);
p.showTree();

_getch();
return 0;
}
0
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2015, 20:23
Ответы с готовыми решениями:

Итератор по бинарному дереву
Всем привет! Помогите пожалуйста! Пишу бинарное дерево, нужно реализовать итератор по нему. Не...

Итератор для обхода по бинарному дереву
Кхм. Попытался реализовать итератор для обхода по бинарному дереву... Наткнулся на запару. Дерево...

Поиск по бинарному дереву целочисленных значений
Здравствуйте! Очень нужна помощь данном, надеюсь что простом, задании. Заранее спасибо!:-[ ...

Довести до ума программу про бинарному дереву
Здравствуйте. Помогите пожалуйста привести до ума задачу: организовать бинарное дерево по заданной...

1
6968 / 6013 / 2731
Регистрация: 14.04.2014
Сообщений: 25,736
20.10.2015, 21:48 2
Что значит подключить? Добавь его в Leaf и заполняй.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2015, 21:48

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Перемещение по бинарному файлу
Перемещаться можно по файлу использую функции seekg() для чтения и seekp() для записи... В общем...

Ошибка в бинарному поиску
Много было тем про бинарный поиск.Я их посмотрел.Где ошибка в моем коде #include&lt;iostream&gt;...

Применить XOR к бинарному файлу
Добрый день, прошу помочь. Имеется некий массив бинарных данных, точнее файл - который надо...

Подключение списка слов к программе
Пишу игру &quot;Виселица&quot;. Нужен список слов для отгадывания. vector&lt;string&gt; words; Как подключить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.