С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 28.01.2017
Сообщений: 52
1

Фибоначчиева пирамида (куча) реализация

12.12.2017, 19:40. Показов 2695. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно реализовать алгоритм Фибоначчиевой кучи, в этом коде показывает кучу ошибок. И они по сути связаны со структурой fib_heap. Код пыталась найти, так как для меня это очень сложно реализовать такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include "stdafx.h"
#include <conio.h>
#include <iostream>
 
using namespace std;
 
typedef bool(*cmpPtr)(node*, node*);
struct node {
    node* parent;     // указатель на отца
    node* child;      // указатель на одного из сыновей
    node* left;       // указатель на левого брата
    node* right;      // указатель на правого брата
    int degree;       // количество дочерних узлов
    bool mark;        // метка - был ли удален один из дочерних элементов
    int key;          // числовое значение узла
};
 
struct fib_heap {
    node* min;        // узел с минимальным корнем
    int roots_amount; // количество узлов
    cmpPtr less;      // указатель на функцию-компаратор
};
 
void add(node* Node, node** bro, node* par = NULL) //добавление нового элемента
{
    if (*bro == NULL) {
        *bro = Node;
        Node->left = Node;
        Node->right = Node;
    }
    else {
        Node->right = (*bro)->right;
        Node->right->left = Node;
        Node->left = *bro;
        (*bro)->right = Node;
    }
    if (less(Node, *bro))
        *bro = Node;
    if (*bro == min) {
        roots_amount++;
        Node->parent = NULL;
    }
    if (par) {
        par->degree++;
        Node->parent = par;
    }
}
node* add(int key) {
    node* Node = new node(key);
    add(Node, &min);
    return Node;
}
 
struct fib_heap //объеденение двух фибоначчиевых куч
{
    void union_fib_heap(fib_heap &fb) {
        union_root(fb.min, fb.roots_amount);
        if (!min || (fb.min && less(fb.min, min)))
            min = fb.min;
        fb.clear();
    }
    void union_root(node* Node, int nodes_amount) {
        if (Node == NULL) return;
        if (min == NULL) {
            min = Node;
            roots_amount = nodes_amount;
        }
        else {
            node *L = Node->left;
            node *R = min->right;
            min->right = Node;
            Node->left = min;
            L->right = R;
            R->left = L;
            roots_amount += nodes_amount;
        }
    }
};
 
int extract_min() //удаление минимального дерева
{
    node* res = min;
    if (res) {
        childs_in_root(res);
        remove_root(res);
        if (res->right == res)
            min = 0;
        else {
            min = min->right;
            consolidate();
        }
    }
    int ans = res ? res->key : ERROR;
    delete res;
    return ans;
}
 
int main()
{
    _getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2017, 19:40
Ответы с готовыми решениями:

Фибоначчиева последовательность
Последовательность чисел a1, a2, …, ai,… называется Фибоначчиевой, если для всех i≥3 верно,...

Фибоначчиева последовательность
Последовательность чисел a1, a2, …, ai,… называется Фибоначчиевой, если для всех i ≥ 3 верно,...

Фибоначчиева система счисления
Здравствуйте, у меня возникла проблема с фибоначчиевой системой счисления: нужно составить...

Фибоначчиева система счисления
Подскажите пожалуйста, как решить задачу: натуральное число перевести в фиб.систему счисления....

0
12.12.2017, 19:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2017, 19:40
Помогаю со студенческими работами здесь

Фибоначчиева система счисления
Здравствуйте, помогите сделать задание по информатике, пожалуйста. Перепишите условие задачи в...

Фибоначчиева система счисления
уже здесь упоминалось, код отсюда, собственно, НО любое число можно представить с помощью...

Фибоначчиева система счисления
Здравствуйте! вот код программы: #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; long int...

Фибоначчиева система счисления
Помогите с кодом для перевода с десятичной в Фибоначчиеву систему счисления. Чисто теоретически...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru