From cc927ad72337dfee53fa93dc27b7e4e4efbacc20 Mon Sep 17 00:00:00 2001 From: Jens Burger Date: Fri, 5 Dec 2025 12:19:11 +0100 Subject: [PATCH] =?UTF-8?q?Stack=20Funktionen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- highscores.txt | 1 + stack.c | 40 ++++++++++++++++++++++++++++++++++++++++ stack.h | 5 +++++ 3 files changed, 46 insertions(+) diff --git a/highscores.txt b/highscores.txt index 4edd5a7..2326b02 100644 --- a/highscores.txt +++ b/highscores.txt @@ -1 +1,2 @@ +player_name;9943 player1;3999 diff --git a/stack.c b/stack.c index e3a90d4..dd516f9 100644 --- a/stack.c +++ b/stack.c @@ -10,24 +10,64 @@ // Pushes data as pointer onto the stack. StackNode *push(StackNode *stack, void *data) { + StackNode *newNode = malloc(sizeof(StackNode)); + if(*newNode == NULL) + { + //printf("Fehler Bei Speicherallozierung!"); + return NULL; + } + newNode->data = data; + newNode->next = 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) { + if(stack == NULL) + { + //printf("Fehlerhafte Adresse uebergeben"); + return NULL; + } + StackNode *next = stack->next; + + free(stack); + + return next; } // Returns the data of the top element. void *top(StackNode *stack) { + if(stack == NULL) + { + //printf("Fehlerhafte Adresse uebergeben"); + return NULL; + } + return stack->data; } // Clears stack and releases all memory. void clearStack(StackNode *stack) { + if(stack == NULL) + { + //printf("Fehlerhafte Adresse uebergeben"); + return NULL; + } + StackNode *currentNode = stack; + StackNode *nextNode; + + while(currentNode != NULL) + { + nextNode = currentNode->next; + free(currentNode); + currentNode = nextNode; + } } \ No newline at end of file diff --git a/stack.h b/stack.h index f7d542d..f438504 100644 --- a/stack.h +++ b/stack.h @@ -8,6 +8,11 @@ The latest element is taken from the stack. */ #include //TODO: passenden Datentyp als struct anlegen +typedef struct StackNode +{ + void *data; + struct SatckNode *next; +} StackNode; // Pushes data as pointer onto the stack. StackNode *push(StackNode *stack, void *data);