Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- const int VELPOLJA = 1000;
- void ispis(int * polje, bool * pomPolje, int index) {
- if(pomPolje[2 * index + 1] == true)
- ispis(polje, pomPolje, 2 * index + 1);
- if(pomPolje[0] == true)
- std::cout << polje[index] << " ";
- if(pomPolje[2 * index + 2] == true)
- ispis(polje, pomPolje, 2 * index + 2);
- }
- void unos(int * polje, bool * pomPolje, int vri, bool op = 1) {
- if(pomPolje[0] == false) {
- pomPolje[0] = true;
- polje[0] = vri;
- std::cout << "Broj je smjesten na index: 0";
- return;
- }
- int index = 0;
- bool found = false;
- while(!found) {
- while(vri > polje[index] && pomPolje[2 * index + 2] == true)
- index = 2 * index + 2;
- while(vri <= polje[index] && pomPolje[2 * index + 1] == true)
- index = 2 * index + 1;
- if(vri > polje[index] && pomPolje[2 * index + 2] == false)
- found = true;
- if(vri <= polje[index] && pomPolje[2 * index + 1] == false)
- found = true;
- }
- if(vri > polje[index])
- index = 2 * index + 2;
- else
- index = 2 * index + 1;
- polje[index] = vri;
- pomPolje[index] = true;
- if(op)
- std::cout << "Broj je smjesten na index: " << index;
- return;
- }
- void brisanje(int * polje, bool * pomPolje) {
- int num = 0;
- std::cout << "Koji broj zelite izbrisati?: ";
- std::cin >> num;
- std::vector<int> vec;
- vec.reserve(50);
- for(int i = 0; i < VELPOLJA; polje[i] = 0, pomPolje[i] = false, i++)
- if(pomPolje[i] == true)
- vec.push_back(polje[i]);
- int j = 0;
- for(; j < vec.size(); ++j)
- if(vec[j] == num)
- break;
- if(j != vec.size())
- vec.erase(vec.begin() + j);
- for(int i = 0; i < vec.size(); i++)
- unos(polje, pomPolje, vec[i], false);
- }
- int main() {
- int polje[VELPOLJA] = {};
- bool pomPolje[VELPOLJA] = {};
- int izbor = 0;
- int vri = 0;
- while(1) {
- std::cout << "\n---IZBORNIK----\n1: upis elementa\n2: ipis stabla\n3: brisanje elemtna\nN: ";
- std::cin >> izbor;
- if(izbor == 1) {
- std::cout << "Upisite vrijednost: ";
- std::cin >> vri;
- unos(polje, pomPolje, vri);
- }
- else if(izbor == 2)
- ispis(polje, pomPolje, 0);
- else if(izbor == 3)
- brisanje(polje, pomPolje);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment