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

Удаление элемента из дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, пуст ли данный элемент массива http://www.cyberforum.ru/cpp-beginners/thread865118.html
Есть массив обьектов некоторого класса(GOODS goods). Хочу написать ф-цию которая покажет пользователю, какие позиции массива пусты, чтоб потом можно было туда чтото записать. Сообственно надо ето както проверить. Я пока разписую методы для всех класов, поетму не могу взять и скомпилировать програму, поетому пишу сюда. Такой вариант (goods==0) как мне кажется не проканает. Если надо код то вот:...
C++ Функция в строке должна вычислять количество слов (слова разделяются пробелом) int sum (const char *pS ) { const char *p (pS); int n (0); while ( *p ) { if ( isspace (*p)) ++n; p++; } return n+1; http://www.cyberforum.ru/cpp-beginners/thread865113.html
Вызов функции, которая возвращает 2 параметра C++
Видимо я что-то принципиально не понимаю, что же тут не так #include <iostream> #include <string> #include <iostream> #include <string> #include <math.h> #include <time.h> #include <stdlib.h> using namespace std;
C++ Конструкторы с параметром, копии и перегрузка операций
Здравствуйте, есть программка следующего содержания: #include "stdafx.h" #include "conio.h" int n1, n2; class LIST { private: int info; LIST *next; LIST *prev; public:
C++ отображение графических примитивов http://www.cyberforum.ru/cpp-beginners/thread865106.html
не подскажите как нарисовать круг, треугольник и домик. Ищу в интернете не как не могу найти(
C++ Прокомментировать функционал программы //----------------------------------------------------------------------------------------------------- #pragma hdrstop //----------------------------------------------------------------------------------------------------- #include <conio.h> //áèáëèîòåêà ïîäêëþ÷åíèÿ ôóíêöèè getch() #include <iostream.h> //áèáëèîòåêà äëÿ cin è cout #include <malloc.h> //áèáëèîòåêà äëÿ äèíàìè÷åñêîãî... подробнее

Показать сообщение отдельно
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100

Удаление элемента из дерева - C++

14.05.2013, 20:25. Просмотров 534. Ответов 0
Метки (Все метки)

Написал 2 функции для удаления элемента из дерева. Брал алгоритм из вирта, но почему-то не работает. Может не правильно с паскаля на си переписал. Помогите пожалуйста

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
//ищем самую правую вершину левого поддерева
void del_2_potomka(struct BinaryTree *r, struct BinaryTree *q) //в качестве аргумента элемент, который и надо удалить
{
    if(r->right!=NULL) del_2_potomka(r->right, q);
    else
    {
        q->data=r->data;
        q=r;
        r=r->left;
    }
}
 
/*удаление вершины из дерева*/
void delete_element(int x, struct BinaryTree *p)
{
    if(p==NULL) printf("Элемента в дереве нет!\n");
    else if(x<p->data) delete_element(x,p->left); //идём влево
    else if(x>p->data) delete_element(x,p->right); //идём вправо
    else //исключаем элемент
    {
        struct BinaryTree *q=p;
        if(q->right==NULL) p=q->left;//если нет правого потомка
        else if(q->left==NULL) p=q->right; //если нет левого потомка
        else del_2_potomka(q->left, q);//если у нас 2 потомка
 
        free(q);
    }
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru