[cdev] Двусвязный список
Grigoriy A. Sitkarev
sitkarev на komitex.ru
Сб Янв 29 18:15:31 MSK 2011
Сергей, тебе надо было для начала это самому проверить. И подумать -- а
можно ли таким API пользоваться на практике? Боюсь тебя разочаровать, но
на деле этот код совершенно бесполезен.
1. list_free() должна высвобождать память для всех элементов списка.
2. list_add_data() должна добавить данные в список, т.е. создать
структуру list_item, прицепить к ней данные и поместить в список.
3. list_del_data() в таком случае должна найти в списке элемент с
данными, которые пользователь хочет удалить, извлечь этот элемент из
списка и высвободить память, которую занимала структура этого элемента.
Возможно, стоит переделать интерфейс -- код возврата сделать int а не
void, как булево значение, был найден такой элемент или нет.
4. list_add() должна делать так чтобы список был циклическим, если ты
подумаешь хорошо, то окажется что здесь есть одно большое преимущество.
5. list_unlink() сразу получает указатель на элемент списка, не надо
ничего там искать, ты можешь извлекать его немедленно.
6. list_nth() понял верно, но нужно перепроектировать, написано жутко.
7. list_sort() работать не будет -- нет проверки на больше-меньше,
только на неравенство.
8. Нужно тебе самому написать тесты, где будут проверяться все функции.
Также как мы делали это с хеш-таблицей. То что оно компилируется это ещё
ничего не значит.
Есть над чем потрудиться. Я бы ещё тебе за стиль пару замечаний сделал,
он у тебя неоднороден, хотя-бы с этого начнём. Впрочем, это уже вторично.
--
Г.А.
Сергей пишет:
> Григорий Александрович, проверьте пожалуйста.
>
> Автор:Кожеванов Сергей.
Подробная информация о списке рассылки cdev