From 154874afda4a8df885e51c01f7681f04fb0b8e61 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sat, 9 Apr 2022 09:43:53 +0200 Subject: neue Verzeichnisstruktur --- stack2.c | 115 --------------------------------------------------------------- 1 file changed, 115 deletions(-) delete mode 100644 stack2.c (limited to 'stack2.c') diff --git a/stack2.c b/stack2.c deleted file mode 100644 index 5f4ba41..0000000 --- a/stack2.c +++ /dev/null @@ -1,115 +0,0 @@ -#include -#include -#include - -#include "util.h" - -/* --8<-- stack2_type */ -typedef int T; - -struct stack { - T * array; - size_t sz, p; -}; -/* -->8-- */ - -/* --8<-- stack2_init */ -void -stack_init(struct stack *stack) -{ - stack->array = NULL; - stack->sz = 0; - stack->p = 0; -} -/* -->8-- */ - -/* --8<-- stack2_push */ -bool -stack_push(struct stack *stack, T data) -{ - if ( stack->array == NULL ) { - if ( (stack->array = malloc(10 * sizeof *stack->array)) != NULL ) { - stack->sz = 10; - stack->p = 0; - } - else { - ERROR("out of memory"); - return false; - } - } - - if ( stack->p == stack->sz ) { - size_t new_sz; - T * new_array; - - if ( (new_array = realloc(stack->array, (new_sz = (stack->sz * 3 / 2)) * sizeof *stack->array)) != NULL ) { - stack->array = new_array; - stack->sz = new_sz; - } - else { - ERROR("out of memory"); - return false; - } - } - - stack->array[stack->p++] = data; - return true; -} -/* -->8-- */ - -/* --8<-- stack2_pop */ -bool -stack_pop(struct stack *stack, T *data) -{ - if ( stack->p != 0 ) { - --stack->p; - - if ( data ) { - *data = stack->array[stack->p]; - } - return true; - } - else - return false; -} -/* -->8-- */ - -/* --8<-- stack2_empty */ -bool -stack_empty(struct stack *stack) -{ - return stack->p == 0; -} -/* -->8-- */ - -/* --8<-- stack2_free */ -void -stack_free(struct stack *stack) -{ - free(stack->array); -} -/* -->8-- */ - -int -main() -{ - struct stack stack[1]; - - stack_init(stack); - - for ( int i = 0; i != 20; ++i ) - stack_push(stack, i); - - while ( !stack_empty(stack) ) { - int i; - - if ( stack_pop(stack, &i) ) - printf("%d\n", i); - else - ERROR("this shouldn't happen!"); - } - - stack_free(stack); - - return EXIT_SUCCESS; -} -- cgit v1.3