diff --git a/stack.c b/stack.c index 35e7708..1309122 100644 --- a/stack.c +++ b/stack.c @@ -69,14 +69,11 @@ StackNode *pop(StackNode *stack) { void *top(StackNode *stack) { return stack != NULL ? stack->data : NULL; } // Clears stack and releases all memory. -StackNode *clearStack(StackNode *stack) { +void clearStack(StackNode **stack) { - while (stack != NULL) { - - StackNode *next = stack->next; - free(stack); - stack = next; + while (*stack != NULL) { + StackNode *next = (*stack)->next; + free(*stack); + *stack = next; } - - return NULL; } \ No newline at end of file diff --git a/stack.h b/stack.h index f90d217..bbb3fce 100644 --- a/stack.h +++ b/stack.h @@ -13,6 +13,7 @@ typedef struct StackNode { void *data; struct StackNode *next; + struct StackNode *prev; } StackNode; @@ -29,6 +30,6 @@ StackNode *pop(StackNode *stack); void *top(StackNode *stack); // Clears stack and releases all memory. -StackNode *clearStack(StackNode *stack); +void clearStack(StackNode **stack); #endif diff --git a/test_stack.c b/test_stack.c index 52ff263..78b019b 100644 --- a/test_stack.c +++ b/test_stack.c @@ -31,12 +31,13 @@ void test_clearStack(void) { int testInts[] = {1, 2, 3, 4, 5}; StackNode *testStack = NULL; + // Stack füllen for (int i = 0; i < 5; i++) { - testStack = push(testStack, &testInts[i]); } - testStack = clearStack(testStack); + clearStack(&testStack); + TEST_ASSERT_NULL(testStack); }