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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 00:45   #1
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию С. Программа, работающая с деревом двоичного поиска

Привет, я пишу программу, работающую с деревом двоичного поиска, но не уверен, что написал всё, чего требует задание. Пишу на C. Не могли бы вы посмотреть условие и код и сказать, есть ли недочёты?
На K меньше
Для дерева двоичного поиска с дополнительной информацией реализовать процедуру, которая по заданному элементу находит элемент, порядок которого на K единиц меньше.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct tree{
	int key;
	tree *left;
	tree *right;
};

tree *Add(tree *t, int x)
{
	if (t==NULL)
	{
		t = (tree *)malloc(sizeof(tree));
		t->key = x;
		t->left = t->right = NULL;
	}
	else
	{
		if (x < t->key) 
			t->left = Add(t->left, x);  
		else
		{
			if (x > t->key) 
				t->right = Add(t->right,x);  
		}
	}
	return t;
}


void PrintTree(tree *t, int n)
{
	int i;
	if (t!=NULL)
	{
		if (t->right) PrintTree(t->right, n+1);
		for (i=0; i < n; i++) putchar(' ');
		printf("%i\n", t->key);
		if (t->left) PrintTree(t->left, n+1);

		
	}
}

void Find(tree *t, int x)
{
	if (t == NULL)
		printf("Element not found!\n");
	else
	if (t->key == x)
		printf("%i\n", t->key);
	else
		if (t->key > x)
			Find(t->left, x);
		else
			if (t->key < x)
				Find(t->right, x);
	
}
int main(void)
{
	tree *t = NULL;
	srand(time(NULL));
	int x, k, n = 6;
	for (int i = 0; i < n; i++)
	{
		x = rand()%100;
		printf("%i ", x);
		t = Add(t, x);

	}
	printf("\n");

	PrintTree(t,1);
	printf("Input element and difference of orders\n");
	scanf("%i %i", &x, &k);
	Find(t, x-k);
	printf("\n");
	return 0;
}
Как-то странно запостился код, не знаю как исправить.
Пол-жизни сидючи, в монитор глядючи...

Последний раз редактировалось Last; 16.01.2011 в 00:47.
Last вне форума Ответить с цитированием
Старый 16.01.2011, 01:36   #2
Косюра
Пользователь
 
Аватар для Косюра
 
Регистрация: 14.01.2011
Сообщений: 74
По умолчанию

Назови как-нибудь тему иначе.
Например "Программа, работающая с деревом двоичного поиска. С"
Девушка - переменная бинарного типа с рандомным значением
Косюра вне форума Ответить с цитированием
Старый 16.01.2011, 16:08   #3
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Вверх, пожалуйста.
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 16.01.2011, 21:41   #4
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Программы проверяются тестирование , так что протестируй ее , если все нормально работает , то значит правильно сделал , если не работает , то пиши что не работает поможем . Но не думаю , что за тебя будут ее тестировать здесь
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исследование алгоритмов линейного и двоичного поиска (язык C) Best1501 Помощь студентам 0 07.12.2010 07:05
Как найти в тексте заданное слово методом двоичного поиска? maxkov Помощь студентам 1 04.11.2010 16:51
дерево двоичного поиска(С++) 1mposs1ble Помощь студентам 0 07.05.2010 16:05
дерево двоичного поиска 1mposs1ble Общие вопросы C/C++ 3 29.04.2010 15:57
Помогите сдать экзамен!!! Нужен код деревьев двоичного поиска и еще 2 програмки Девчонка Помощь студентам 8 18.01.2008 19:02