| 20 | } |
| 21 | |
| 22 | void DoublyLinkedListDestroy(DoublyLinkedList *list) { |
| 23 | DoublyLinkedListNode *iterator = list->first; |
| 24 | while(NULL != iterator) { |
| 25 | DoublyLinkedListNode *to_delete = iterator; |
| 26 | iterator = iterator->next; |
| 27 | DoublyLinkedListNodeDestroy(list, &to_delete); |
| 28 | } |
| 29 | |
| 30 | list->first = NULL; |
| 31 | list->last = NULL; |
| 32 | list->allocator = NULL; |
| 33 | list->deallocator = NULL; |
| 34 | } |
| 35 | |
| 36 | DoublyLinkedListNode *DoublyLinkedListNodeCreate( |
| 37 | const void *const data, |