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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2013, 22:59   #1
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию Добавление с случайное дерево поиска

Добрый день!
Стыдно, но я откровенно говоря не очень силен в Паскале. Нужна Ваша помощь, как переделать этот код на язык Си.
Я что-то наваял, но мой код не работает. Дерево пустое... Я явно упустил какой-то момент при адаптации под Си.

Код:
procedure SDP(D: integer; var Root: pVertex);
var p: ^pVertex;
begin
  p := @Root;
  while p^ <> nil do
    if D < p^^.Data then
     p := @p^^.Left
    else if D > p^^.Data then
           p := @p^^.Right;
  if p^ = nil then
  begin
    new(p^);
    p^^.Data := D;
    p^^.Right := nil;
    p^^.Left := nil;
  end
end;
 
...
 
  for i := 1 to n do
    SDP(a[i],Root2);
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 05.05.2013, 23:38   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Зачем что-то переделывать - пишите сразу на С.
s-andriano вне форума Ответить с цитированием
Старый 06.05.2013, 05:34   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

На Си так на Си

Код:
for(i = 0; i < n; i++)
	{
		AddTree(root, mass[i]);
	}
......
........
void AddTree(Tree *root, int D)
{
	Tree **p = &root;

	while((*p) != NULL)
	{
		if(D < (*p)->data)			p = &((*p)->pleft);
		else if(D > (*p)->data)		p = &((*p)->preight);
	}
	if((*p) == NULL)
	{
		(*p) = (Tree**)malloc(sizeof(Tree*));
		(*p)->data = D;
		(*p)->pleft = (*p)->preight = NULL;
	}
}
Код не работает так как этого хотелось бы.
Подскажите как доработать код....

Пытаюсь победить вот этот псевдокод.
ver.jpg

И алгоритм вроде не сложных, но не получается... .
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 06.05.2013 в 11:21.
Bugrimov вне форума Ответить с цитированием
Старый 10.05.2013, 22:43   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Возникли проблемы с освоением случайных деревьев поиска. Есть у кого нибудь хорошая ссылка на материал или книгу. Только не Google.....
Если есть видео материал, то вообще слов нет
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 10.05.2013 в 22:45.
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дерево поиска mnevseravno Общие вопросы C/C++ 2 18.11.2012 18:20
Дерево бинарного поиска vika911 Помощь студентам 3 17.03.2012 20:57
Дерево поиска maxim43k Общие вопросы C/C++ 0 07.09.2011 22:22
Дерево поиска на С++ maxim43k Помощь студентам 0 07.09.2011 21:50
дерево двоичного поиска 1mposs1ble Общие вопросы C/C++ 3 29.04.2010 15:57