From f42a997683ef0082b9c5b19f6f5b6bf1e53f5d1b Mon Sep 17 00:00:00 2001 From: Kristin Date: Fri, 5 Dec 2025 11:12:30 +0100 Subject: [PATCH] clearstack mit ** --- stack.c | 13 +++++-------- stack.h | 3 ++- test_stack.c | 5 +++-- 3 files changed, 10 insertions(+), 11 deletions(-) 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); }