Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //------------PAWEŁ GĄSIEWSKI EIT 17/18 T1 135581---------------
- //Nie wiem czy wszystko zrealizowałem poprawnie, bo np. nie wiem czy prosił Pan,
- //by przepisać do drzewa też roota itp. w każdym razie przesyłam kod, który był
- //realizowany na zajęciach.
- #include <iostream>
- #include <ctime>
- #include <cstdlib>
- using namespace std;
- class jablon {
- private:
- int wiek, i_jablek, wysokosc;
- public:
- jablon *left;
- jablon *right;
- jablon *next;
- jablon();
- ~jablon();
- void wstaw_l(jablon *j);
- void wstaw_d(jablon *j);
- void wyswietl_l();
- void wyswietl_d();
- int return_wiek();
- int return_ijablek();
- int return_wysokosc();
- int ilosc_l(int ct = 1);
- int ilosc_d(int ct = 1);
- int maxl(int value = 0);
- int maxd(int value = 0);
- int sumajablekd(int value = 0);
- int sumajablekl(int value = 0);
- int gapcountd(int gap, int value = 0);
- int gapcountl(int gap, int value = 0);
- void przepisanie(jablon *root);
- };
- jablon::jablon() {
- wiek = (rand() % 21);
- i_jablek = (rand() % 90) + 10;
- wysokosc = (rand() % 5) + 1;
- left = NULL;
- right = NULL;
- next = NULL;
- }
- jablon::~jablon() {
- if (left)
- delete left;
- cout << "~d o wieku : " << wiek << " oraz wyokosci : " << wysokosc << endl;
- if (right)
- delete right;
- }
- int jablon::return_wiek() {
- return wiek;
- }
- int jablon::return_ijablek() {
- return i_jablek;
- }
- int jablon::return_wysokosc() {
- return wysokosc;
- }
- void jablon::wstaw_l(jablon *j) {
- if (next)
- {
- if (j->wiek < next->wiek)
- {
- j->next = next;
- next = j;
- }
- else
- next->wstaw_l(j);
- }
- else
- next = j;
- }
- void jablon::wyswietl_l() {
- cout << "{LISTA} : Jablon o wieku : " << wiek << " wysokosci : " << wysokosc << " ilosci jablek : " << i_jablek << endl;
- if (next)
- next->wyswietl_l();
- }
- int jablon::ilosc_l(int ct) {
- if (next)
- ct = next->ilosc_l(++ct);
- return ct;
- }
- int jablon::maxl(int value) {
- jablon *help = this;
- while (help->next) {
- if (help->next->i_jablek > value)
- value = help->next->i_jablek;
- else
- help = help->next;
- }
- return value;
- }
- int jablon::sumajablekl(int value) {
- value = i_jablek;
- if (next)
- value += next->sumajablekl(value);
- return value;
- }
- int jablon::gapcountl(int gap, int value) {
- if (i_jablek > gap)
- value++;
- if (next)
- value = next->gapcountl(gap, value);
- return value;
- }
- void jablon::wstaw_d(jablon *j) {
- if (j->wiek < wiek)
- {
- if (left)
- left->wstaw_d(j);
- else
- left = j;
- }
- else
- {
- if (right)
- right->wstaw_d(j);
- else
- right = j;
- }
- }
- void jablon::wyswietl_d() {
- if (left)
- left->wyswietl_d();
- cout << "{DRZEWO} : Jablon o wieku : " << wiek << " wysokosci : " << wysokosc << " ilosci jablek : " << i_jablek << endl;
- if (right)
- right->wyswietl_d();
- }
- int jablon::ilosc_d(int ct) {
- if (left)
- ct = left->ilosc_d(++ct);
- if (right)
- ct = right->ilosc_d(++ct);
- return ct;
- }
- int jablon::maxd(int value){
- if (i_jablek > value)
- {
- value = i_jablek;
- if (left)
- value = left->maxd(value);
- if (right)
- value = right->maxd(value);
- }
- else {
- if (left)
- value = left->maxd(value);
- if (right)
- value = right->maxd(value);
- }
- return value;
- }
- int jablon::sumajablekd(int value) {
- value = i_jablek;
- if (left)
- value += left->sumajablekd(value);
- if (right)
- value += right->sumajablekd(value);
- return value;
- }
- int jablon::gapcountd(int gap, int value) {
- if (i_jablek > gap)
- value++;
- if (left)
- value = left->gapcountd(gap, value);
- if (right)
- value = right->gapcountd(gap, value);
- return value;
- }
- void jablon::przepisanie(jablon *root)
- {
- while (root->next)
- {
- jablon *help = root->next;
- root->next = help->next;
- this->wstaw_d(help);
- }
- }
- int main() {
- jablon *root_l = new jablon();
- for (int i = 0; i < 50; i++)
- {
- jablon *nj = new jablon();
- root_l->wstaw_l(nj);
- }
- root_l->wyswietl_l();
- cout << endl;
- cout << "Liczba obiektow na liscie : " << root_l->ilosc_l() << endl;
- jablon *help = root_l;
- while (help->next)
- {
- if ((help->next->return_ijablek() % 2) == 0)
- {
- jablon *pomoc = help->next;
- if (pomoc->next)
- {
- help->next = pomoc->next;
- pomoc->next = NULL;
- root_l->wstaw_d(pomoc);
- }
- else
- {
- help->next = NULL;
- pomoc->next = NULL;
- root_l->wstaw_d(pomoc);
- }
- }
- else
- help = help->next;
- }
- cout << "Wyswietlam liste : " << endl;
- root_l->wyswietl_l();
- cout << endl;
- cout << "Wyswietlam drzewko : " << endl;
- root_l->wyswietl_d();
- cout << endl;
- cout << "Liczba elementow w liscie : " << root_l->ilosc_l() << endl;
- cout << "Liczba elementow w drzewie : " << root_l->ilosc_d() << endl;
- cout << "Drzewo o najwiekszej liczbie jablek w liscie : " << root_l->maxl() << endl;
- cout << "Drzewo o najwiekszej liczbie jablek w BST : " << root_l->maxd() << endl;
- cout << "Suma jablek na drzewach w liscie : " << root_l->sumajablekl() << endl;
- cout << "Suma jablek na drzewach w BST : " << root_l->sumajablekd() << endl;
- cout << "Liczba drzew, na ktorych jest wiecej niz 60 jablek w liscie : " << root_l->gapcountl(60) << endl;
- cout << "Liczba drzew, na ktorych jest wiecej niz 60 jablek w drzewie : " << root_l->gapcountd(60) << endl;
- cout << endl;
- cout << "DOKONUJE PRZEPISANIA LISTY DO NOWEGO DRZEWA : " << endl;
- jablon *root_d = new jablon();
- root_d->przepisanie(root_l);
- cout << "Wyswietlam liste z root_l po przepisaniu : " << endl;
- root_l->wyswietl_l();
- cout << endl;
- cout << "Wyswietlam liste z root_d po przepisaniu : " << endl;
- root_d->wyswietl_d();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement