Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вставить строку в структуру 
V
    Опции темы
dorogoyIV
Дата 5.12.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: нет
Всего: 46



программа предлагает вставить набор символов, введенных с клавиатуры.
первый раз вставляет нормально - если, например, "zzz", то в конец, если "ааа" - в начало.
если потом что то другое вставить, фигня получается...
как исправить?
Код

#include <stdafx.h>
#include <string.h>
#include <malloc.h>
#include <iostream.h>

struct Node
{
    char *info;
    struct Node *left, *right;
};
Node *node = 0;

Node *insert(Node *root, char *ch)
{
    if(root == 0)
    {
        root = (Node *)malloc(sizeof(Node));
        root ->info = new char [strlen(ch) + 1];
        root ->info = ch;
        root ->left = root ->right = 0;
    }
    else
    {
        if(strcmp(ch, root ->info) <= 0)
            root ->left = insert(root ->left, ch);
        else
            root ->right = insert(root ->right, ch);
    }
    return root;
}

void showNode(Node *n)
{
    cout << "node = " << endl;
    void show(Node *node);
    show(n);
}

void show(Node *n)
{
    if(n)
    {
        show(n ->left);
        cout << "\t" << n ->info;
        show(n ->right);
    }
}

void main()
{
    node = insert(node, "ddd");
    node = insert(node, "jjj");
    node = insert(node, "ooo");
    showNode(node);
    void test();
    test();
 }

void test()
{
    while(true)
    {
        cout << endl << "what insert?" << endl;
        char ins [256];
        cin >> ins;
        char *ch = ins;
        node = insert(node, ch);
        showNode(node);
    }
}

PM MAIL   Вверх
asmdzen
Дата 5.12.2010, 12:57 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



несовсем понятно для чего предназначен этот код:
Код

        root ->info = new char [strlen(ch) + 1];
        root ->info = ch;

может следовало писать:
Код

        root ->info = new char [strlen(ch) + 1];
        strcpy(root ->info, ch); // копирование строки на новое место

PM MAIL   Вверх
dorogoyIV
Дата 5.12.2010, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: нет
Всего: 46



asmdzen, да, спасибо  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.