Я пытаюсь уничтожить свою двухстороннюю очередь, но почему-то не справляюсь с указателями. Я написал следующий код (двухсторонняя очередь - указатель на указатель, который указывает на первый элемент двухсторонней очереди). DequeItem - это структуры с полями next (указатель на следующий элемент) и данными (void *).
void deque_destroy(DequeItem **deque) {
DequeItem *temp;
DequeItem *item;
for (item = *deque; item != NULL; item = temp) {
printf("%d", *((int*)((item)->data)));
temp = item->next;
free(item);
}
}
Объявление структуры:
struct DequeItem {
void *data; // Data stored in the deque item
struct DequeItem *previous; // Pointer to the previous DequeItem in the ring
struct DequeItem *next; // Pointer to the next DequeItem in the ring
};
typedef struct DequeItem DequeItem;