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

Девевья. Поиск с включением - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает русский язык http://www.cyberforum.ru/cpp-beginners/thread1194271.html
Если выбрать в свитче 2 или 4 варианты (ввод вручную) и рассчитать их, то когда будет рассчитывать выдаст что-то типа этого: 1) , …¤г Ї® ¤®а®ЈҐ, ЌЁЄг¤* *Ґ ᬮвао 2) , …¤г Ї® ¤®а®ЈҐ, ЌЁзҐЈ® *Ґ е®зг...
C++ Число с плавающей запятой в строках Задание - из строки выделить подстроку, задающую число с плавающей точкой. http://www.cyberforum.ru/cpp-beginners/thread1194260.html
C++ Книги C++
http://www.ozon.ru/context/detail/id/5531965/ http://www.ozon.ru/context/detail/id/7979735/ Если кто-то знает, то скажите какая из этих лучше подойдет для обучения ? Или предложите свой вариант....
C++ Написать шалонный класс «Квадратная матрица»
Класс «Квадратная матрица». Методы: вычисление суммы отрицательных элементов каждого столбца и запись его в массив, возведение матрицы в квадрат, вычисление следа матрицы, сравнение матриц на...
C++ Не компилируется http://www.cyberforum.ru/cpp-beginners/thread1194245.html
Не могу понять в чем ошибка, помогите разобраться #include <stdio.h> #include <stdlib.h> void zapolnit() { FILE* f = fopen("file.dat", "wb"); printf("Kolichestvo zifr: ");
C++ Как удалить строку в ТХТ файле? Если не секрет, как удалить строку в ТХТ файле через С++? к примеру я напишу 4ре слова и надо будет удалить например первое как это сделать? подробнее

Показать сообщение отдельно
Rosenroot
2 / 2 / 0
Регистрация: 21.12.2013
Сообщений: 23
Завершенные тесты: 2

Девевья. Поиск с включением - C++

31.05.2014, 03:01. Просмотров 295. Ответов 0
Метки (Все метки)

Программа формирует дерево из массива целых чисел и выводит его на экран.
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <iostream>
struct Node{
    int d;
    Node *left;
    Node *right;
};
Node *first(int d);
Node *search_insert(Node *root, int d);
void print_tree(Node * root, int l);
//-------------------------------------
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int b[] = {10,25,20,6,21,8,1,30};
    Node *root = first(b[0]);
    for (int i = 1; i < 8; i++)search_insert(root, b[i]);
    print_tree(root, 0);
    getchar();
    return 0;
}
//---------------------------------------
// формируем первый элемент дерева
Node *first(int d){
    Node *pv = new Node;
    pv->d = d;
    pv->left = 0;
    pv->right = 0;
    return pv;
}
//---------------------------------------
// поиск с включением
 Node *search_insert(Node *root, int d){
    Node *pv = root, *prev;
    bool found = false;
    while (pv && !found){
        prev = pv;
        if      (d ==pv->d) found = true;
        else if (d < pv->d) pv    = pv->left;
        else                pv    = pv->right;
    }
    if (found) return pv;
    // создание нового узла
    Node *pnew = new Node;
    pnew->d     = d;
    pnew->left  = 0;
    pnew->right = 0;
 
    if (d < prev->d)
        // присоединение к левому поддереву предка
        prev->left = pnew;
    else
        // присоединение к правому поддереву предка
        prev->right = pnew;
    return pnew;
}
//--------------------------------------------------
// обход дерева
void print_tree(Node *p, int level){
    if (p){
        print_tree(p->left, level + 1);
        for (int i = 0; i<level; i++)cout<<"    ";
        cout<< p->d <<endl;
        print_tree(p->right, level + 1);
    }
}


Проблема вот в чем :

if (d < prev->d)
// присоединение к левому поддереву предка
prev->left = pnew;
else
// присоединение к правому поддереву предка
prev->right = pnew;
return pnew;

Тут выдает ошибку: error C4703: используется потенциально неинициализированная локальная переменная-указатель "prev"! Прошу помочь устранить ошибку.

Добавлено через 7 минут
Все, решил проблему: Node *pv = root, *prev; переписал как:
Node *pv = root, *prev=NULL;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru