Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //ALGO2 IS1 211A LAB04
- //Jakub Ogryzek
- //oj44443@zut.edu.pl
- #include "pch.h"
- #include <iostream>
- #include <ctime>
- #include <time.h>
- #include <iomanip>
- #include <string>
- #include <cstdlib>
- #include <memory>
- #include <string>
- using namespace std;
- template <typename T>
- class Heap {
- public:
- T *data = new T[capacity];
- int capacity;
- int size;
- Heap()
- {
- size = 0;
- capacity = 1;
- data = new T[capacity];
- }
- ~Heap()
- {
- delete[] data;
- data = nullptr;
- size = 0;
- capacity = 0;
- }
- int Push(int size)
- {
- if (size == 0)
- return 0;
- int parent_index = parent(size);
- if (parent_index == -1000)
- return 0;
- if (data[size] <= data[parent_index])
- return 0;
- else {
- swap(data[size], data[parent_index]);
- Push(parent_index);
- }
- }
- void AddNewElement(const T&input)
- {
- size = size + 1;
- if (size <= capacity) {
- data[size-1] = input;
- }
- if (size > capacity)
- {
- capacity = capacity * 2;
- T *temp = new T[capacity];
- for (int i = 0; i < size - 1; i++)
- {
- temp[i] = move(data[i]);
- }
- temp[size - 1] = input;
- delete[] data;
- data = temp;
- }
- Push(size - 1);
- }
- void swap(T x, T y)
- {
- T temp;
- temp = x;
- x = y;
- y = temp;
- }
- int parent(int index)
- {
- if (index > 0)
- return (index - 1) / 2;
- else {
- cout << "Rodzic tego elementu nie istnieje" << endl;
- return -1000;
- }
- }
- int left_son(int index)
- {
- if (2 * index + 1 < size)
- return 2 * index + 1;
- else {
- cout << "Ten element nie ma lewego syna" << endl;
- return nullptr;
- }
- }
- int right_son(int index)
- {
- if (2 * index + 2 < size)
- return 2 * index + 2;
- else {
- cout << "Ten element nie ma prawego syna" << endl;
- return nullptr;
- }
- }
- };
- int main()
- {
- Heap<int>* heap = new Heap<int>();
- heap->AddNewElement(1); //0
- heap->AddNewElement(2); //1
- heap->AddNewElement(3); //2
- //heap->AddNewElement(4); //3
- //heap->AddNewElement(5); //4
- delete heap;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement