| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Кольцевой односвязный список |
| Автор: ALI46 3.5.2008, 19:55 | ||
| Разработайте класс, реализующий кольцевой односвязный список. Методы класса: добавление элемента в список, просмотр списка, удаление произвольного элемента из списка. Поля записей: участники, количество забегов, в которых они принимали участие, сумма сделанных на них ставок, количество побед. я написал вот так:
Подскажите пожалуйста - как реализовать ввод/вывод списка в один и тот же бинарный файл, как сделать удаление произвольного элемента(у меня удаляет первый в списке) и как сделать данный список кольцевым односвязным(у меня линейный односвязный)? |
| Автор: ALI46 4.5.2008, 16:43 | ||||
мне в задании сказано что ввод/вывод должен осуществляться в один бинарный файл, как это сделать?
а в каком именно месте? |
| Автор: Annihilator 4.5.2008, 19:18 |
в поле УКАЗАТЕЛЬ НА СЛЕДУЮЩИЙ ЭЛЕМЕНТ, там ведь связь как раз осуществляется между элементами с помощью этого поля! |
| Автор: ALI46 7.5.2008, 21:01 | ||
удаление произвольного элемента я так реализовал
но как ввести/вывести в один файл и сделать список кольцевым без зацикленного вывода не знаю... |
| Автор: Annihilator 7.5.2008, 21:16 |
запомни где-нибудь адрес первого элемента. Далее бежишь по списку и как только у тебя rex->next будет равен адресу первого элемента, выводи rex и завершай вывод |
| Автор: ALI46 7.5.2008, 22:23 | ||||||||
в методе add я вместо
прописал
а в методе show вместо
написал
в итоге ничо не выводит |
| Автор: ALI46 12.5.2008, 19:25 | ||
список так и остался линейным, ноя добавил чтение-запись в файл...
однако при запуске в список добавляется мусор если файл пуст, и если мы что нибудь у даляем из списка, то на файле это никак не отражается... в чём причина? и как можно исправить? |
| Автор: Lycifer 14.5.2008, 09:24 | ||||
На самом деле все просто:
Дело в том что в файле может быть просто '\n', ну или он действительно пуст(вообще я не проверял), делай проверку что есть что считывать.
Самый легкий способ перезаписать файл, то и есть полностью, ну или с помощью сикгнета удалять(я же не знаю как у тебя там хранятся данные) |