clearstack mit **
This commit is contained in:
parent
8b44089f23
commit
f42a997683
13
stack.c
13
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;
|
||||
}
|
||||
3
stack.h
3
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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user