Compare commits

..

No commits in common. "1d7de0f5e3dceee386c6d0735de5f165ce1a421f" and "6311aff9d721499bd493fcef76ebee97fd3f22e6" have entirely different histories.

2 changed files with 17 additions and 19 deletions

View File

@ -88,12 +88,7 @@ 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
(*stack)->next = NULL; // späteren Pointerzugriff verhindern
free(*stack); // aktuelles Element freigeben free(*stack); // aktuelles Element freigeben
*stack = next; // Zeiger auf nächsten Knoten setzen *stack = next; // Zeiger auf nächsten Knoten setzen
} }

View File

@ -75,12 +75,11 @@ void test_deleteTopElement(void) {
stack = push(stack, &testInts[i]); stack = push(stack, &testInts[i]);
} }
TEST_ASSERT_EQUAL_PTR(&testInts[2], stack->data); // oberstes Element ist 30 TEST_ASSERT_EQUAL_PTR(&testInts[2], stack->data);
stack = pop(stack); // oberstes Element löschen stack = pop(stack);
TEST_ASSERT_EQUAL_PTR(&testInts[1], stack->data); TEST_ASSERT_EQUAL_PTR(&testInts[1], stack->data);
TEST_ASSERT_NULL( TEST_ASSERT_NULL(stack->prev);
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);
@ -99,16 +98,20 @@ void test_returnData(void) {
stack = push(stack, &testInts[i]); stack = push(stack, &testInts[i]);
} }
TEST_ASSERT_EQUAL_PTR(&testInts[2], TEST_ASSERT_EQUAL_PTR(&testInts[2], top(stack));
top(stack)); // top gibt richtige Adresse zurück
stack = pop(stack); // oberstes Element löschen
TEST_ASSERT_EQUAL_PTR(&testInts[1], top(stack));
stack = pop(stack); if (stack->next != NULL) {
TEST_ASSERT_EQUAL_PTR(&testInts[0], top(stack)); TEST_ASSERT_EQUAL_PTR(&testInts[1], stack->next->data);
if (stack->next->next != NULL) {
TEST_ASSERT_EQUAL_PTR(&testInts[0], stack->next->next->data);
}
}
stack = pop(stack); // bei leerem Stack wird NULL zurückgegeben StackNode *last = stack;
TEST_ASSERT_NULL(stack); while (last->next != NULL) {
last = last->next;
}
TEST_ASSERT_NULL(last->next);
} }
void test_clearStack(void) { void test_clearStack(void) {