From 204f2a25267c95017e29fbfa608e945172970203 Mon Sep 17 00:00:00 2001 From: = Date: Thu, 4 Dec 2025 18:56:18 +0100 Subject: [PATCH] Added complete stack functionality --- .vscode/settings.json | 6 ++++ makefile | 2 ++ stack.c | 37 +++++++++++++++++--- stack.h | 11 +++--- stackTests | Bin 0 -> 32600 bytes test_stack.c | 77 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 124 insertions(+), 9 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 stackTests create mode 100644 test_stack.c diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f36e144 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "files.associations": { + "stdio.h": "c", + "stdlib.h": "c" + } +} \ No newline at end of file diff --git a/makefile b/makefile index 5b2e04b..49f367b 100644 --- a/makefile +++ b/makefile @@ -37,6 +37,8 @@ doble_initial: # -------------------------- # Unit Tests # -------------------------- +stackTests: stack.o test_stack.c $(unityfolder)/unity.c + $(CC) $(CFLAGS) -I$(unityfolder) -o stackTests test_stack.c stack.o $(unityfolder)/unity.c ${LDFLAGS} unitTests: echo "needs to be implemented" diff --git a/stack.c b/stack.c index e3a90d4..1814599 100644 --- a/stack.c +++ b/stack.c @@ -8,26 +8,53 @@ * `clearStack`: gibt den gesamten Speicher frei. */ // Pushes data as pointer onto the stack. -StackNode *push(StackNode *stack, void *data) +StackNode* push(StackNode* stack, void* data) { - + //pointer onto new struct + StackNode* newNode = malloc(sizeof(StackNode)); + newNode->data = data; + //*stack := first node of the stack; is now the second to first node + newNode->nextNode = stack; + return newNode; } // Deletes the top element of the stack (latest added element) and releases its memory. (Pointer to data has to be // freed by caller.) -StackNode *pop(StackNode *stack) +StackNode* pop(StackNode* stack) { + //getting the second to first node + StackNode* tmp = stack->nextNode; + // data should be freed by the caller + // free(stack->data); + // stack->data = NULL; + free(stack); + stack = NULL; + + return tmp; } // Returns the data of the top element. -void *top(StackNode *stack) +void* top(StackNode* stack) { + //No stack --> No data-pointer + if (stack == NULL) return NULL; + return stack->data; } // Clears stack and releases all memory. -void clearStack(StackNode *stack) +void clearStack(StackNode* stack) { + if (stack == NULL) return; + if (stack->nextNode != NULL) clearStack(stack->nextNode); + + // date should be freed by the caller. + // free(stack->data); + // stack->data = NULL; + + free(stack); + // technically not needed (dangling pointer) + stack = NULL; } \ No newline at end of file diff --git a/stack.h b/stack.h index f7d542d..4c3a3a7 100644 --- a/stack.h +++ b/stack.h @@ -7,17 +7,20 @@ The latest element is taken from the stack. */ #include -//TODO: passenden Datentyp als struct anlegen +typedef struct StackNode { + void* data; + struct StackNode* nextNode; +} StackNode; // Pushes data as pointer onto the stack. -StackNode *push(StackNode *stack, void *data); +StackNode* push(StackNode *stack, void *data); // Deletes the top element of the stack (latest added element) and releases its memory. (Pointer to data has to be // freed by caller.) -StackNode *pop(StackNode *stack); +StackNode* pop(StackNode *stack); // Returns the data of the top element. -void *top(StackNode *stack); +void* top(StackNode *stack); // Clears stack and releases all memory. void clearStack(StackNode *stack); diff --git a/stackTests b/stackTests new file mode 100644 index 0000000000000000000000000000000000000000..be175e300bf66b704f798afa774ef4ac8de0611b GIT binary patch literal 32600 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 S-xZGFiY2mkp-aG3)&4IMn&->_ literal 0 HcmV?d00001 diff --git a/test_stack.c b/test_stack.c new file mode 100644 index 0000000..9b77f35 --- /dev/null +++ b/test_stack.c @@ -0,0 +1,77 @@ +#include +#include +#include "unity.h" +#include "stack.h" + + +void test_topReturnsCorrectValue(void) { + // 1. Arrange + int* value1; + int* value2; + int* outVal1; + int* outVal2; + value1 = malloc(sizeof(int)); + value2 = malloc(sizeof(int)); + StackNode* startNode = NULL; + + // 2. Act + *value1 = 1234; + *value2 = 5678; + startNode = push(startNode, value1); + // new top node is node 2 + startNode = push(startNode, value2); + outVal2 = top(startNode); + // node 1 should now be the top node + startNode = pop(startNode); + outVal1 = top(startNode); + + // 3. Assert + //Also tests for the functionality of 'push' + TEST_ASSERT_EQUAL_INT32(*value1, *outVal1); + TEST_ASSERT_EQUAL_INT32(*value2, *outVal2); + + free(value1); + value1 = NULL; + free(value2); + value2 = NULL; + clearStack(startNode); +} + +void test_popRemovesElements(void) { + // 1. Arrange + StackNode* startNode = NULL; + + // 2. Act + // Entering some Elements into Stack (could be added manually for testing) + startNode = push(startNode, NULL); + startNode = push(startNode, NULL); + startNode = push(startNode, NULL); + startNode = push(startNode, NULL); + // Now removing created Elements + startNode = pop(startNode); + startNode = pop(startNode); + startNode = pop(startNode); + startNode = pop(startNode); + + // 3. Assert + TEST_ASSERT_NULL(startNode); +} + +void setUp(void){ + +} + +void tearDown(void){ + +} + +int main(void) { + UNITY_BEGIN(); + + printf("\n============================\nStack tests\n============================\n"); + + RUN_TEST(test_topReturnsCorrectValue); + RUN_TEST(test_popRemovesElements); + + return UNITY_END(); +} \ No newline at end of file