Merge remote-tracking branch 'origin/Krisp' into tobi_experimental
This commit is contained in:
commit
1d7de0f5e3
9
stack.c
9
stack.c
@ -88,8 +88,13 @@ void clearStack(StackNode **stack) { // Zeiger auf den Zeiger auf den Stackkopf
|
|||||||
// verändert den Zeiger selbst, mit *stack lokale Kopie
|
// verändert den Zeiger selbst, mit *stack lokale Kopie
|
||||||
// im Aufruf &stack verwenden
|
// im Aufruf &stack verwenden
|
||||||
while (*stack != NULL) {
|
while (*stack != NULL) {
|
||||||
|
|
||||||
|
(*stack)->prev = NULL; // späteren Pointerzugriff verhindern
|
||||||
StackNode *next = (*stack)->next; // nächstes Element speichern
|
StackNode *next = (*stack)->next; // nächstes Element speichern
|
||||||
free(*stack); // aktuelles Element freigeben
|
|
||||||
*stack = next; // Zeiger auf nächsten Knoten setzen
|
(*stack)->next = NULL; // späteren Pointerzugriff verhindern
|
||||||
|
|
||||||
|
free(*stack); // aktuelles Element freigeben
|
||||||
|
*stack = next; // Zeiger auf nächsten Knoten setzen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
27
test_stack.c
27
test_stack.c
@ -75,11 +75,12 @@ void test_deleteTopElement(void) {
|
|||||||
stack = push(stack, &testInts[i]);
|
stack = push(stack, &testInts[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_ASSERT_EQUAL_PTR(&testInts[2], stack->data);
|
TEST_ASSERT_EQUAL_PTR(&testInts[2], stack->data); // oberstes Element ist 30
|
||||||
|
|
||||||
stack = pop(stack);
|
stack = pop(stack); // oberstes Element löschen
|
||||||
TEST_ASSERT_EQUAL_PTR(&testInts[1], stack->data);
|
TEST_ASSERT_EQUAL_PTR(&testInts[1], stack->data);
|
||||||
TEST_ASSERT_NULL(stack->prev);
|
TEST_ASSERT_NULL(
|
||||||
|
stack->prev); // pointer zum alten head wurde auf NULL gesetzt
|
||||||
|
|
||||||
stack = pop(stack);
|
stack = pop(stack);
|
||||||
TEST_ASSERT_EQUAL_PTR(&testInts[0], stack->data);
|
TEST_ASSERT_EQUAL_PTR(&testInts[0], stack->data);
|
||||||
@ -98,20 +99,16 @@ void test_returnData(void) {
|
|||||||
stack = push(stack, &testInts[i]);
|
stack = push(stack, &testInts[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_ASSERT_EQUAL_PTR(&testInts[2], top(stack));
|
TEST_ASSERT_EQUAL_PTR(&testInts[2],
|
||||||
|
top(stack)); // top gibt richtige Adresse zurück
|
||||||
|
stack = pop(stack); // oberstes Element löschen
|
||||||
|
TEST_ASSERT_EQUAL_PTR(&testInts[1], top(stack));
|
||||||
|
|
||||||
if (stack->next != NULL) {
|
stack = pop(stack);
|
||||||
TEST_ASSERT_EQUAL_PTR(&testInts[1], stack->next->data);
|
TEST_ASSERT_EQUAL_PTR(&testInts[0], top(stack));
|
||||||
if (stack->next->next != NULL) {
|
|
||||||
TEST_ASSERT_EQUAL_PTR(&testInts[0], stack->next->next->data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StackNode *last = stack;
|
stack = pop(stack); // bei leerem Stack wird NULL zurückgegeben
|
||||||
while (last->next != NULL) {
|
TEST_ASSERT_NULL(stack);
|
||||||
last = last->next;
|
|
||||||
}
|
|
||||||
TEST_ASSERT_NULL(last->next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_clearStack(void) {
|
void test_clearStack(void) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user