Re: Динамические структуры
От: Кодт Россия  
Дата: 19.04.07 17:31
Оценка:
Здравствуйте, z1z, Вы писали:

z1z>Всем доброго времени суток)

z1z>Я к вам вот по какому поводу…у меня висит лаба по динамике и есть код задачи которая полностью аналогична моей из Лабы (только там про автобусы а у меня про книжки)…и вот проблема – я очень плохо понимаю тот код особенно в части указателей и работы с двусвязным списком, который как раз и является основой этой Лабы(…отсюда просьба – не могли бы вы мне объяснить этот код…

Объясняю: код — в топку.
Во-первых, там односвязный список.
Во-вторых, такой инфернальный* стиль программирования (впрочем, характерный для лаб, писанных новичками под нечутким руководством препода и на дремучем турбоси++).
*) сиречь, адский
В-третьих, программа с ошибками.

А именно:
— buffer overrun
struct bus
{
    char FIO_voditel[50];
    .....
};

.....
cin.get( X.FIO_voditel , 100 );
.....

— хвостовая рекурсия вместо итерации (сколько там под стек отводится? в модели tiny?)
void filled()
{
    randomize(); // каждый раз!!! зачем?
    
    // отжираем 80 байтов на стеке, плюс ещё 4 были на служебные нужды
    char opt[10];
    struct bus X;
    
    ..... // диалог с пользователем, добавляем копию в список
    
    memset(&X,0,sizeof(bus)); // а меж тем, эта переменная нам больше не нужна. Зачем чистить
    filled(); // ну что, не жалко очередных 88 байтов?
}

— память от списка не освобождается
ну и ещё по мелочи...



Тебе нужен именно двусвязный список, или односвязный сгодится?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.