Opened 5 years ago
Closed 5 years ago
#159 closed ожидается проверка (задача сдана)
WW #3
Reported by: | Brilliantov Kirill | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_intrusive_list | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (8)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
- Здесь ошибка.
- &(*x) это x. Лишний код стоит удалить.
- Проверка контрактов функции: не хватает assert-ов. Контракты: указатели ненулевые, вершина лежит (или не лежит) в списке и тд
- Может быть удобно: https://en.cppreference.com/w/c/string/byte/isdigit
- Вместо 1,...6, лучше использовать enum.
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Сейчас программа не работает на примере из условия.
Предлагаю использовать sscanf, чтобы поправить эту проблему.
Именование: nod и node рядом сводят с ума
Еще контракт: при добавлении точки ее нет в списке, а при удалении - есть. Удобно завести отдельную функцию для проверки, есть ли точка в списке. Тогда, в частности, в release сборке от проверки контракта не будет никакого оверхэда.
commands можно сразу инициализировать:
char* commands[6] = {"add", "rm", "len", "rma", "print", "exit"};
Хотелось бы изолировать все детали реализации списка в clist.c, в частности, знание о фиктивной вершине. Для этого стоит сделать функцию, которая возвращает "настоящую" голову.
comment:4 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:5 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Имелось в виду
intrusive_node *get_head(intrusive_list *list) { return list->head->next; }
чтобы в main.c фигурировали только такие указатели, что от них безопасно звать container_of.
В частности, желательно, чтобы free(l->head) располагался в clist.c
Желательны пустые строки между функциями.
comment:6 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
Насчет getHead. Я не очень понимаю зачем делать как Вы говорите, если в моей реализации list->head указывает на элемент, который был последним добавленным. А если в списке нет элементов, то has_next(...) вернет -1 и container_of вызыван не будет.
comment:8 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |