| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] Круговой список -> 2 линейных списка |
| Автор: Master_ 31.5.2009, 09:41 | ||||
Как этот круговой список создавать то? Вообще без понятия... Может у кого есть опыт?
? |
| Автор: zim22 31.5.2009, 10:08 | ||
круговой == кольцевой. список, в котором последний элемент указывает на первый.
|
| Автор: Master_ 31.5.2009, 10:25 | ||
А можно поподробнее объяснить?
Ставит значение текущее или слудеющее? Не совсем понятно: node *n = 0 и new node(i, t); |
| Автор: zim22 31.5.2009, 10:40 |
node *n = 0 - по умолчанию поле next будет равно нулю. если же мы его указываем явно, как в случае new node(i, t);, то поле next будет равно t. чтобы лучше понять - возьмите листик, ручку и нарисуйте элементы списка и их взаимодействие. |
| Автор: Master_ 31.5.2009, 12:39 | ||
| Понятно... Только вот не понимаю еще: в каком виде хранить списки в файле? Просто значение на строку? А чтобы сделать кольцевой список, после прочтения первого создавать новый список, подобно
Так? |
| Автор: Master_ 31.5.2009, 13:48 | ||
Такая проблема, все время попадает в первое условие (см ниже в ф=ии read_file), то есть постоянно заполняется первый элемент (головной).
|
| Автор: zim22 31.5.2009, 14:10 | ||
|
| Автор: Master_ 31.5.2009, 14:30 |
| Да уж.. А как же его разделять на два линейных? Пополам чтоли делить? |
| Автор: zim22 31.5.2009, 14:32 | ||
пополам, или по заданному алгоритму деления. например: все чётные элементы в первый список, все нечётные - во второй. |
| Автор: Master_ 31.5.2009, 14:39 |
| Например пополам. Как сделать? Считаем количество элементов и делим пополам, а потом перемещаем? В новые списки? И еще, что-то недопонял, как обходить созданный кольцевой список без зацикливаний 1 раз? |
| Автор: zim22 31.5.2009, 14:55 | ||
храните указатель на начало списка. и если поле next следующий элемент станет равно head - значит список закончился. |
| Автор: Master_ 31.5.2009, 15:16 | ||
Понятно, что примерно такое:
Он то до от начала до конца проходит, и в конце дебагер выдает ошибку, на последнем элементе.. Надо по другому, но как - додуматься не могу.. |
| Автор: zim22 31.5.2009, 15:39 | ||
это является продолжением моего кода: http://forum.vingrad.ru/index.php?showtopic=261438&view=findpost&p=1883230 |
| Автор: Master_ 31.5.2009, 16:03 | ||||
Нашел у себя ошибку. При чтении из файла не дописал в конец x->next = head;
Теперь работает
Осталось только разделить список на два линейных. Подкините идейку? |
| Автор: zim22 31.5.2009, 17:05 |
первую половину списка в один список новый вставьте вторую половину списка в другой новый список вставьте |