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

Не связные списки - C++

Восстановить пароль Регистрация
 
Takeshi80
 Аватар для Takeshi80
17 / 15 / 2
Регистрация: 08.03.2012
Сообщений: 124
22.11.2014, 16:54     Не связные списки #1
Доброго времени суток уважаемые форумчане, возникла небольшая проблема со списками, очень надеюсь на вашу помощь.

Есть структура данных:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct PidKat
{
    char country[100];
    char FIO[100];
    float rezult=0;
    PidKat *next;
};
 
struct Katalog
{
    int dist;
    PidKat *Pk;
    Katalog *next;
};
И есть функция Input, которая считывает с файла нужную мне инфу, и она должна закидать это все в список, но, почему-то не работает, помогите найти ошибку:

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
void Input(Katalog *list)
{
    FILE *f = fopen("input.txt", "rt");
    char c[100], *ptr,*ptr2;
    if (list == NULL)
        list = new Katalog;
    else
    {
        list->next = new Katalog;
        list = list->next;
    }
    if (list->Pk == NULL)
        list->Pk = new PidKat;
    else
    {
        list->Pk->next = new PidKat;
        list->Pk = list->Pk->next;
    }
 
    fgets(c, 100, f);
    ptr2 = strtok(c, ":");
    ptr2 = strtok(NULL, " ");
    list->dist = atoi(ptr2);
    while (!feof(f))
    {
        fgets(c, 100, f);
        if (c[0] == 'd' && c[1] == 'i')
        {
            list->next = new Katalog;
            list = list->next;
            ptr = strtok(c, ":");
            ptr = strtok(NULL, " ");
            list->dist = atoi(ptr);
            list->Pk = new PidKat;
            list->next = NULL;
        }
        else
        {       
            ptr = strtok(c, " ");
            
            strcpy(list->Pk->country, ptr);
            while (ptr != NULL)
            {
                ptr = strtok(NULL, " ");
                memset(list->Pk->FIO, 0, strlen(list->Pk->FIO));
                strcpy(list->Pk->FIO, ptr);
                list->Pk->FIO[strlen(list->Pk->FIO)] = ' ';
                ptr = strtok(NULL, " ");
                strcat(list->Pk->FIO, ptr);
                list->Pk->FIO[strlen(list->Pk->FIO)] = ' ';
                ptr = strtok(NULL, " ");
                strcat(list->Pk->FIO, ptr);
                ptr = strtok(NULL, " ");
                list->Pk->rezult = atof(ptr);
                ptr = strtok(NULL, " ");
            }
            list->Pk->next = NULL;
        }
        
    }
    list->next = NULL;
}
я думаю проблема с

C++
1
list->Pk
поскольку при записе в main следующей конструкции
C++
1
list->Pk = NULL;
выдает ошибку:
Не связные списки

содержание файла input.txt:
distance: 100
Україна Козубко Олександр Ростиславович 12.3
Польща Фрост Анджей Рюрькович 11.1
Росія Пушкін Олександр Сергійович 13.4
distance: 200
Чехія Кондур Марія Василівна 11.2
Білорусь Вовкодав Максим Олегович 10.4
США Петренко Іван Петрович 9.76
distance: 110
Англія Баюрський Андрій Ростиславович 8.4
Франція Бабійчук Анастасія Віталіївна 8.21
Китай Островський Анатолій Афанасійович 10.2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2014, 16:54     Не связные списки
Посмотрите здесь:

Связные списки C++
C++ Связные списки
C++ Связные списки
Связные списки C++
C++ Связные списки.
Связные списки C++
C++ Связные списки
C++ однонаправленные связные списки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru