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

бинарное древо (удаление) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ STL обращение к элементу list http://www.cyberforum.ru/cpp-beginners/thread43094.html
Помогите исправить ошибку. #include <list> #include <iostream> using namespace std; class PeopleB{ public: int xxx; }; const int EnKolB=4; int main(){
C++ Для чего нужен define? Для чего нужен оператор define? например код #define N 20 /* сколько первых чисел посчитать */ void main(){ int fibs, index; http://www.cyberforum.ru/cpp-beginners/thread43051.html
Работа со строками. Связное хранение строк. C++
Постановка задачи В текстовом файле хранится последовательность слов. Предполагается, что слово содержит не более 20 букв, слова отделяются друг от друга одним или бо-лее пробелами, количество слов...
Нужно исправить 2 ошибки в коде C++
собственно, САБЖ. нужно исправить 2 ошибки в коде, чтобы его можна было скомпилить и сделать из него ехе-шник. код немалый, тому залил на sendspace: http://sendspace.com/file/ubkkh6 времени...
C++ Вывод случайных текстов на экран http://www.cyberforum.ru/cpp-beginners/thread42999.html
помогите пожалуйста, мне нужен код для случайных выводов текстов на экран
C++ обход массива рендом. Дан массив 10 на 10. Рендом выбираем точку, сравниваем элемент... Затем нужно опять выбирать рендом элемент, но так что бы не выбирать тот, который уже брали. Как можно запомнить, что выбирали уже, а... подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.07.2009, 05:08
C
1
2
3
4
5
6
struct tree *dtree(struct tree *root, char key)
{
  struct tree *p,*p2;
 
  if(!root) return root; /* вершина не найдена */
...
это с Шилдтовской книжки пример, алгоритмы он ещё хорошо объясняет, а кодирует ...
например, он когда видит пустой узел, он в него заходит и внутри определяет, что тот пустой, потом делает новый узел, поднимается и прицепляет его, при этом ему требуется в функцию прохода передавать кроме корня ещё и указатель на дочерний узел
на 503 странице в результате копирования кода, он стал так же получать имя ячейки редкого массива из структуры, которую он забыл передать в функцию (ну, то есть, мало того, что там нерационально передавать всю структуру, чтобы взять с неё только имя ячейки, так эта конструкция ещё и копировалась несколько раз как нормальная и в итоге ещё и к ошибке привела)
сортировка обменом типа

Код
void sort(int *a, int size)
{    
    int i, j, t;
    
    for (i = 0; i < size-1; i++)
        for (j = i+1; j < size; j++)
            if (a[i] > a[j])
                t = a[i], a[i] = a[j], a[j] = t;
}
там вообще в таком забубённом виде, куча переменных, использование их через индексы и ещё флажок состояния
ща напишу, это надо видеть

Код
/* Сортировка посредством выбора. */
void select(char *items, int count)
{
  register int a, b, c;
  int exchange;
  char t;
  
  for(a=0; a < count-1; ++a) {
    exchange = 0;
    c = a;
    t = items[a];
    for(b=a+1; b < count; ++b) {
      if(items[b] < t) {
        c = b;
        t = items[b];
        exchange = 1;
      }
    }
    if(exchange) {
      items[c] = items[a];
      items[a] = t;
    }
  }    
}
так что, я не знаю, сам Шилдт пишет эти коды или нет, но то, что он не запускал многие - это точно

он объяснял там алгоритм удаления узла, нужно взять левую ветвь узла и перецепить её в правую ветвь, а потом правую ветвь прикрепить на место этого узла и узел освободить
в правой ветви нужно спустится к самому левому листу и прицепить её там, видимо, в левый указатель
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru