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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2009, 16:20   #1
Anastasia.K
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 10
Сообщение реализация бинарного дерева с помощью указателя

Добрый день

Объясните, пожалуйста, как правильно написать код. Я никак не могу разобраться с этими указателями...
Подскажите верное решение задачи. (Реализация бинарного дерева с помощью указателя)

Код:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define LAMBDA 0;

typedef char labeltype;
typedef struct cell_tag {
   labeltype label;
	struct cell_tag *leftchild;
	struct cell_tag *rightchild;
} celltype;

typedef celltype *node;
typedef celltype *BTREE;


typedef char my_str[5];

void MAKE_NULL(BTREE *Tptr){
(*Tptr)=NULL;
}
int EMPTY(BTREE T){
if(&T==NULL) return 1;
return 0;
}

node CREATE (labeltype l, BTREE TL, BTREE TR, BTREE *T){
node *p;
*T=(celltype*)malloc(sizeof(celltype));
(*T)->leftchild=TL;
(*T)->rightchild=TL;
(*T)->label=l;
p=T;
return(*p);
}

node INSERT_LEFT_CHILD(labeltype l, node i, BTREE *Tptr){
node *p;
i->leftchild=(celltype*)malloc(sizeof(celltype));
i->leftchild->label=l;
p=&(i->leftchild);
return (*p);
}


node INSERT_RIGHT_CHILD(labeltype l, node i, BTREE *Tptr){
node *p;
i->rightchild=(celltype*)malloc (sizeof(celltype));
i->rightchild->label=l;
p=&(i->rightchild);
return(*p);
}

node LEFT_CHILD(node i, BTREE T){
node *p;
if(i->leftchild==NULL) return LAMBDA;
p=&(i->leftchild);
return(*p);
}

node RIGHT_CHILD(node i, BTREE T){
node *p;
if(i->rightchild==NULL) return LAMBDA;
p=&(i->rightchild);
return(*p);
}


labeltype LABEL(node i, BTREE T){
return(i->label);
}

void DELETE (node i, BTREE *Tptr){
i=NULL;
}

node ROOT(BTREE T) {
node *p;
if(EMPTY(T)) return LAMBDA;
p=&T;
return(*p);
}

void CHANGE_LABEL(labeltype l, node i, BTREE *Tptr){
i->label=l;
}


Заранее спасибо!

Последний раз редактировалось Anastasia.K; 01.11.2009 в 22:58.
Anastasia.K вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Высота бинарного дерева dido171 Помощь студентам 4 02.12.2014 13:30
Создания бинарного дерева С++ Olya90 Помощь студентам 0 10.06.2009 18:58
Составление бинарного дерева [MI_nor] Общие вопросы C/C++ 1 08.05.2009 00:28
создание бинарного дерева zetrix Паскаль, Turbo Pascal, PascalABC.NET 2 30.11.2006 19:32