Opened 5 years ago

Closed 5 years ago

#235 closed ожидается проверка (задача сдана)

WW_intrusive_list

Reported by: Roman Venediktov Owned by: Sokolov Viacheslav
Component: WW_intrusive_list Version: 2.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 5 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

debug_compileSubfiles - не очень хорошое именование, лучше везде snake_case

Расписал ​https://wiki.compscicenter.ru/index.php/C%2B%2B_1MIT_осень_1_2019#.D0.A2.D1.80.D0.B5.D0.B1.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.BA.D0.BE.D1.80.D1.80.D0.B5.D0.BA.D1.82.D0.BD.D0.BE.D1.81.D1.82.D0.B8.2C_.D0.BF.D1.80.D0.B5.D0.B4.D1.8A.D1.8F.D0.B2.D0.BB.D1.8F.D0.B5.D0.BC.D1.8B.D0.B5_.D0.BA_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D0.BC и, в частности, не хватает:

  • проверок ненулевых указателей
  • желательно в функциях add_node / remove_node проверять, что вершины отсуствует / присутствует, для чего удобно сделать вспомогательный метод

Какая мотивация в сигнатуре struct intrusive_list *remove_all_points вместо просто void remove_all_points? (и других местах)

В программе утечка памяти: на exit не очистится список.

Хотелось бы изолировать все детали реализации списка в clist.c, в частности, знание о фиктивной вершине. Для этого нужно завести дополнительные методы, которые можно именовать, например, begin(list) и end(list), которые возращают head и head->prev соответственно, а также сделать метод, который по (list, node) скажет, можно ли итерироваться дальше или нужно остановиться.

comment:2 Changed 5 years ago by Roman Venediktov

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 5 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed

malloc может вернуть NULL, нужен assert.

struct intrusive_list *list = init_list(malloc(sizeof(struct intrusive_list))); - аллокация не нужна, можно и на стэке выделить.

Кажется, что front/back расходятся с исходной терминологией задачи.

Note: See TracTickets for help on using tickets.