Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2010, 09:37   #1
grave123
Пользователь
 
Регистрация: 06.12.2009
Сообщений: 15
Восклицание Двунаправленный список

Возникла проблема при создании двунаправленного кольцевого списка, что я делаю не так? Список заполняется вроде верно, но при доступе к предыдущему элементу, появляются проблема..

Описание самого списка:
Код:
struct characters {
        char data;
        characters* next;
        characters* prev;
};
Функция реализующая заполнение списка символами из файла, до точки..
Код:
characters* readList (FILE* file)
{
        characters *ch, *head;
        char c;
 
        head = new characters;
        head->prev = NULL;
        head->next = NULL;
        ch = head;
 
        while ((c = fgetc(file)) != '.')
        {       
                ch->next = new characters;
                ch->prev = ch;
                fscanf(file, "%c", &ch->data);
                ch = ch->next;
        }
 
        ch->next = head;
        ch = head;
 
        return ch;
}
grave123 вне форума Ответить с цитированием
Старый 08.03.2010, 10:44   #2
d9m0n
Пользователь
 
Регистрация: 03.03.2009
Сообщений: 29
По умолчанию

тут:
Код:
ch->next = new characters;
ch->prev = ch;
устанавливается предыдущий элемент на себя

нужно примерно вот так:
Код:
characters* readList (FILE* file)
{
        characters *ch, *head;
        char c;
 
        head = new characters;
        head->prev = NULL;
        head->next = NULL;
        ch = head;
 
        while ((c = fgetc(file)) != '.')
        {       
                ch->next = new characters;
                ch->next->prev = ch;
                fscanf(file, "%c", &ch->data);
                ch = ch->next;
        }
 
        ch->next = head;
        head->prev=ch;
        ch = head;
 
        return ch;
}
d9m0n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленный список dip Помощь студентам 3 02.03.2010 12:16
Двунаправленный список xOptimuSx Общие вопросы C/C++ 1 23.01.2010 17:41
Двунаправленный список на С++ JeyKip Помощь студентам 0 11.01.2010 23:04
Двунаправленный список F_A_N_Alex Помощь студентам 0 01.10.2009 00:35
Двунаправленный список Chudo4258 Помощь студентам 6 09.05.2009 07:16