Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 17:01   #1
megaster
Новичок
Джуниор
 
Регистрация: 10.12.2011
Сообщений: 1
По умолчанию B+ дерево!

Здравствуйте. Собственно недавно совсем столкнулся с проблемой по реализации Б+ дерева... имею код реализации Б дерева, но разница между Б и Б+ существенна,за счет различния её структуры..во 1 все листья соединены друг с другом, во 2 все значения ключей(т.е. данные которые можно получить по ключу) только в листьях, в промежуточных узлах(в том числе и в корне) хранятся лишь копии ключей(без сопровождающейся информации) , так вот собственно код Б дерева :
Может ли кто-то подсказать,помочь, как преобразовать структуру из данной(Б) в Б+...?
Код:
// Kursov.cpp: определяет точку входа для консольного приложения.
//
// b-tree.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdarg.h>
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>


char NEWT[256];   //для вывода русского текста на экран.
char*RUS(char*TEXT) {
CharToOemA(TEXT,NEWT);
return NEWT;}
class B_tree
{
public:
B_tree (); //Конструктор "пустого" B-дерева
void DeleteAllTree();
B_tree (int amount,...); //Конструктор B-дерева, состоящего из amount элементов
//B_tree (const B_tree& b_tree); //Конструктор копирования
~B_tree (); //Деструктор B-дерева
void Add (int key,char fio[25],char dolgnost[30],int room,char grafic[15]); //Добавление ключа key в структуру B-дерева
bool Search (int key); //Поиск ключа в B-дереве (true - найден, false - не найден)
void Delete (int key); //Удаление всех экземпляров ключа key в B-дереве, при отсутствии данного ключа структура остается без изменений
void Print (); //Обход и вывод B-дерева на печать способом, используемым при составлении оглавления книг

private:
struct Page
{
int RAmount; //Фактическое число элементов на странице
Page *p0; //Указатель на самого левого потомка страницы
struct Item
{
int key; //Значение одного ключа страницы
char fio[25];
char dolgnost[30];
int room;
char grafic[15];
Page *p; //Указатель на страницу-потомок
int count; //Число экземпляров данного ключа, хранимых на странице
} key_pt[4]; //Массив, хранящий значения ключей страницы и указатели на потомков страницы

} *root; //Указатель на корень B-дерева

void search_add_key (char fio[25],char dolgnost[30],int room,char grafic[15],int key, Page *a, bool& grow, Page::Item& v);
//Рекурсивная функция, выполняющая добавление ключа key в структуру B-дерева; a - указатель на страницу, grow - "B-дерево стало выше", v - передаваемый вверх элемент
void print_b_tree (Page *a, int level);
//Рекурсивная фунцкия, выполняющая печать B-дерева с уровня level
bool search_key (int key, Page *a);
//Рекурсивная функция, выполняющая поиск ключа в B-дереве (true - ключ найден, false - не найден)
void delete_key (int key, Page *a, bool& smallsize);
//Рекурсивная функция, выполняющая удаление ключа key из структуры B-дерева, a - указатель на страницу, smallsize - "страница a мала", требуется слияние страниц
void del (int R, Page *a, Page *q, bool& smallsize);
//Рекурсивная функция, выполняющая балансировку B-дерева после удаления ключа key из его структуры, при необходимости производит слияние страниц
void fusion (Page *father, Page *son, int R, bool& smallsize);
//Функция, выполняющая слияние страниц B-дерева, father - "страница отец", son - "страница-сын отца", на которой число элементов меньше допустимого, R - индек удаляемого из страницы-отца элемента, smallsize - "страница-отец мала"
void destroy (Page *a); //"Деструктор" вершины a B-дерева
void copy (Page *a, Page *b); //Рекурсивная функция, создающая копию b страницы B-дерева a
};
megaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дерево Тюха Visual C++ 0 23.05.2011 18:50
Дерево в С# vedro-compota C# (си шарп) 5 07.11.2010 14:02
дерево С# Natok Помощь студентам 0 14.09.2009 23:42
Дерево Rifler Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2008 08:42
Дерево Yoger БД в Delphi 3 25.01.2007 01:24