Форум программистов, компьютерный форум CyberForum.ru

Бинарное дерево: создание, добавление элемента и удаление элемента - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Используйте флаги формата класса ios http://www.cyberforum.ru/cpp-beginners/thread145123.html
Напишите программу для вывода значения 1000.5364 в 20-символьном поле, с выравниванием влево, с двумя позициями после запятой и символом % в качестве символа заполнения. (Используйте флаги формата класса ios.) В долгу не останусь срочно надо)
C++ Создайте манипулятор вывода Помогите срочно решить задачу Создайте манипулятор вывода sethex(), который осуществляет вывод в шестнадцатеричной системе счисления и устанавливает флаги uppercase и showbase. Кроме того, создайте манипулятор вывода reset(), который отменяет изменения, сделанные манипулятором sethex(). http://www.cyberforum.ru/cpp-beginners/thread145122.html
Ошибка C++
#include <iostream.h> #define N 100 class Mas { protected: int n; public: virtual void Sort(); virtual ~Mas();
C++ Написать метод решения
надо написать метод решения задачи: Дана действительная матрица размера n*m. в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент. #include <iostream> #include <iomanip> #include <ctime> using namespace std;
C++ уважаемые програмисты http://www.cyberforum.ru/cpp-beginners/thread145070.html
уважаемые програмисты ...плизз..... очень нужна ваша помощь....... мне послезавтра сдавать.... помогите плиз... а то я не очень разбираюсь в этом..... Язык Си (не Си++)!!!!! 1).Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить является ли последовательность строго убывающей. 2). 3
C++ 1 пример 50 рублей Зд №1 Получить целочисленную квадратную матрицу порядка 7, Элементами которой являются числа 1,2,3,...,49, расположенные в ней по спирали. Зд №2 Преобразовать строку, заменив в ней все восклицательные знаки точками. Количество пробелов между словами не должно превышать одного. Зд №3 Создать список владельцев автомашин (количество запрашивается с клавиатуры), содержащий: фамилию, марку... подробнее

Показать сообщение отдельно
xGSx
Сообщений: n/a
15.06.2010, 03:12     Бинарное дерево: создание, добавление элемента и удаление элемента
Задача: Построить бинарное дерево, реализовать добавление в него элемента с сохранением упорядоченности и удаление, также с сохранением упорядоченности. Помогите найти ошибку в коде и довести его до рабочего состояния, пожалуйста.
Функции sozd_derevo(), add_obj(), deliting() это функции меню, они вызываются из main().
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
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <string.h>
#include <io.h>
struct catalog
{ char del; char shifr[10], name[20], fio[15],izdat[15];
int year;char nalic[4];  int x;
} catal, tmp,tmp1,tmp2;
FILE *f; char filename[]="catalog.dat", filename1[]="tmp.dat";
FILE *q;
 
char zvez (int i)
{if (i==1) return '*';else return ' ';}
 
 
struct elem
{ catalog data;
  elem *l,*r;
};
//============================================================
elem *root;
 
void addelem (elem **t,catalog obj)
{ elem *w;
  if (*t==NULL)
  { *t=new elem;
    (*t)->data=obj;
    (*t)->l=(*t)->r=NULL;
  }
  else
  if (strcmp(obj.name,(*t)->data.name)<0)
  addelem (&((*t)->l),obj);
  else addelem (&((*t)->r),obj);
  }
 
void print (elem *root)
{ if (root!=NULL)
  { print (root->l);
    printf (" %s ",root->data.name);
    print (root->r);
  }
}
 
void sozd_derevo()
{
 clrscr();
 
 f=fopen(filename,"rb");
 root=new elem;
 root->data=tmp;
 root->l=NULL;
 root->r=NULL;
 
 
root=NULL;
while (fread(&tmp,sizeof(catalog),1,f))
       addelem (&root,tmp);
 
print (root);
 
 getch(); fclose(f);
}
//================================================
 
 void add_in_elem(elem **t, catalog obj)
{
 if (t)
 {
   if ((strcmp(obj.name,(*t)->data.name)<0)&&((*t)->l==NULL))
    {
      elem *root1;
      *t=new(elem);
      (root1)->data=obj;
      (root1)->l=NULL;
      (root1)->r=NULL;
      (*t)->l=root1;
    } 
    else
    if ((strcmp(obj.name,(*t)->data.name)<0)&&(strcmp(obj.name,((*t)->l)->data.name))<0)
      add_in_elem(&((*t)->l), obj); 
      else
    if ((strcmp(obj.name,(*t)->data.name)<0)&&(strcmp(obj.name,((*t)->l)->data.name))>0)
     {
      elem *root1;
      *t=new(elem);
      (root1)->data=obj;
     // (root1)->l=(*t)->l;
      (root1)->l=((*t)->l);
      (root1)->r=NULL;         
      (*t)->l=root1;
     }
     else
    if ((strcmp(obj.name,(*t)->data.name)>0))
      add_in_elem(&((*t)->r), obj);
    
 }
} 
 
 
void add_obj ()
{ catalog tmp; clrscr();
tmp.del='1';
printf("Pressmark:\n"); gets(tmp.shifr);
printf("Book name:\n");gets(tmp.name);
printf("Author name:\n");gets(tmp.fio);
printf("Year of publication:\n");scanf("%d",&tmp.year);
printf("Publishing:\n");gets(tmp.izdat);
printf("Available in subscribe (yes-no):\n"); gets(tmp.nalic);
clrscr();
add_in_elem(&root, tmp);
//root=NULL;
print (root);
getch();
}
Добавлено через 16 часов 30 минут
Ошибка скорее всего где-то в указателях...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru