clearstack mit **

This commit is contained in:
Kristin 2025-12-05 11:12:30 +01:00
parent 8b44089f23
commit f42a997683
3 changed files with 10 additions and 11 deletions

13
stack.c
View File

@ -69,14 +69,11 @@ StackNode *pop(StackNode *stack) {
void *top(StackNode *stack) { return stack != NULL ? stack->data : NULL; } void *top(StackNode *stack) { return stack != NULL ? stack->data : NULL; }
// Clears stack and releases all memory. // Clears stack and releases all memory.
StackNode *clearStack(StackNode *stack) { void clearStack(StackNode **stack) {
while (stack != NULL) { while (*stack != NULL) {
StackNode *next = (*stack)->next;
StackNode *next = stack->next; free(*stack);
free(stack); *stack = next;
stack = next;
} }
return NULL;
} }

View File

@ -13,6 +13,7 @@ typedef struct StackNode {
void *data; void *data;
struct StackNode *next; struct StackNode *next;
struct StackNode *prev;
} StackNode; } StackNode;
@ -29,6 +30,6 @@ StackNode *pop(StackNode *stack);
void *top(StackNode *stack); void *top(StackNode *stack);
// Clears stack and releases all memory. // Clears stack and releases all memory.
StackNode *clearStack(StackNode *stack); void clearStack(StackNode **stack);
#endif #endif

View File

@ -31,12 +31,13 @@ void test_clearStack(void) {
int testInts[] = {1, 2, 3, 4, 5}; int testInts[] = {1, 2, 3, 4, 5};
StackNode *testStack = NULL; StackNode *testStack = NULL;
// Stack füllen
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
testStack = push(testStack, &testInts[i]); testStack = push(testStack, &testInts[i]);
} }
testStack = clearStack(testStack); clearStack(&testStack);
TEST_ASSERT_NULL(testStack); TEST_ASSERT_NULL(testStack);
} }