test_stack mit &
This commit is contained in:
parent
f42a997683
commit
5e96ec050c
31
stack.c
31
stack.c
@ -20,33 +20,33 @@
|
||||
|
||||
StackNode *createNode(void *data) {
|
||||
|
||||
StackNode *node =
|
||||
malloc(sizeof(StackNode)); // Speicher reservieren, Speicherplatz für das
|
||||
// struct StackNode
|
||||
StackNode *node = malloc(sizeof(StackNode));
|
||||
|
||||
if (node == NULL)
|
||||
return NULL; // Speicher konnte nicht reserviert werden
|
||||
return NULL;
|
||||
|
||||
node->data = data; // Zeiger auf data neuer node
|
||||
node->next = NULL; // nächster Zeiger ist NULL, Ende der Liste
|
||||
node->data = data;
|
||||
node->next = NULL;
|
||||
node->prev = NULL;
|
||||
|
||||
return node; // pointer auf den neuen Knoten zurückgeben
|
||||
return node;
|
||||
}
|
||||
|
||||
// Pushes data as pointer onto the stack.
|
||||
StackNode *push(StackNode *stack, void *data) {
|
||||
|
||||
StackNode *newNode = createNode(data); // Speicher für neuen Knoten
|
||||
// reservieren
|
||||
StackNode *newNode = createNode(data);
|
||||
|
||||
if (newNode == NULL) { // wenn Speicher nicht reserviert werden konnte, wird
|
||||
// stack unverändert zurückgegeben
|
||||
if (newNode == NULL) {
|
||||
return stack;
|
||||
}
|
||||
|
||||
newNode->next = stack; // pointer verschieben
|
||||
newNode->next = stack;
|
||||
if (stack != NULL) {
|
||||
stack->prev = newNode;
|
||||
}
|
||||
|
||||
return newNode; // Zeiger auf neuen Speicherbereich zurückgeben
|
||||
return newNode;
|
||||
}
|
||||
|
||||
// Deletes the top element of the stack (latest added element) and releases its
|
||||
@ -57,6 +57,9 @@ StackNode *pop(StackNode *stack) {
|
||||
return NULL;
|
||||
|
||||
StackNode *nextNode = stack->next;
|
||||
if (nextNode != NULL) {
|
||||
nextNode->prev = NULL;
|
||||
}
|
||||
|
||||
free(stack);
|
||||
|
||||
@ -66,7 +69,7 @@ StackNode *pop(StackNode *stack) {
|
||||
}
|
||||
|
||||
// Returns the data of the top element.
|
||||
void *top(StackNode *stack) { return stack != NULL ? stack->data : NULL; }
|
||||
void *top(StackNode *stack) { return stack ? stack->data : NULL; }
|
||||
|
||||
// Clears stack and releases all memory.
|
||||
void clearStack(StackNode **stack) {
|
||||
|
||||
15
test_stack.c
15
test_stack.c
@ -8,14 +8,12 @@
|
||||
void test_createNode(void) {
|
||||
|
||||
int testInt = 26;
|
||||
|
||||
StackNode *testNode = createNode(&testInt);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(testNode);
|
||||
|
||||
TEST_ASSERT_EQUAL_PTR(&testInt, testNode->data);
|
||||
|
||||
TEST_ASSERT_NULL(testNode->next);
|
||||
TEST_ASSERT_NULL(testNode->prev);
|
||||
|
||||
free(testNode);
|
||||
}
|
||||
@ -27,18 +25,16 @@ void test_deleteTopElement(void) {}
|
||||
void test_returnData(void) {}
|
||||
|
||||
void test_clearStack(void) {
|
||||
|
||||
int testInts[] = {1, 2, 3, 4, 5};
|
||||
StackNode *testStack = NULL;
|
||||
StackNode *stack = NULL;
|
||||
|
||||
// Stack füllen
|
||||
for (int i = 0; i < 5; i++) {
|
||||
testStack = push(testStack, &testInts[i]);
|
||||
stack = push(stack, &testInts[i]);
|
||||
}
|
||||
|
||||
clearStack(&testStack);
|
||||
clearStack(&stack);
|
||||
|
||||
TEST_ASSERT_NULL(testStack);
|
||||
TEST_ASSERT_NULL(stack);
|
||||
}
|
||||
|
||||
void setUp(void) {}
|
||||
@ -49,6 +45,7 @@ int main(void) {
|
||||
UNITY_BEGIN();
|
||||
|
||||
printf("------------------------stack test------------------------\n");
|
||||
|
||||
RUN_TEST(test_createNode);
|
||||
RUN_TEST(test_pushDataToStack);
|
||||
RUN_TEST(test_deleteTopElement);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user