diff options
Diffstat (limited to 'data_structures/chapter_3/stack_array.c')
| -rw-r--r-- | data_structures/chapter_3/stack_array.c | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/data_structures/chapter_3/stack_array.c b/data_structures/chapter_3/stack_array.c deleted file mode 100644 index 4c23334..0000000 --- a/data_structures/chapter_3/stack_array.c +++ /dev/null @@ -1,90 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -#include "stack_array.h" - -#define EMPTY_TOS (-1); -#define MIN_STACK_SIZE (5); - -struct stack_record -{ - int capacity; - int top_of_stack; - elem *array; -} - -stack create_stack(int max_elements) -{ - stack s; - - if(max_elements < MIN_STACK_SIZE) - printf("size too small.\n"); - - s = malloc(sizeof(struct stack_record)); - if(s == NULL) - printf("out of space"); - - s->array = malloc(sizeof(elem) * max_elements); - - if(s->array == NULL) - printf("out of space"); - - s->capacity = max_elements; - make_empty(s); - - return s; -} - -void dispose_stack(stack s) -{ - if(s != NULL) { - free(s->array); - free(s); - } -} - -int is_empty(stack s) -{ - return s->top_of_stack == EMPTY_TOS; -} - -void make_empty(stack s) -{ - s->top_of_stack = EMPTY_TOS; -} - -void push(elem x, stack s) -{ - if(s->top_of_stack >= capacity) - printf("full stack"); - else - s->array[++s->top_of_stack] = x; - -} - -elem top(stack s) -{ - if(!is_empty(s)) - return s->array[s->top_of_stack]; - - printf("empty stack"); - return 0; -} - -void pop(stack s) -{ - if(!is_empty(s)) - s->top_of_stack--; - - printf("empty stack"); -} - -elem top_and_pop(stack s) -{ - if(!is_empty(s)) - /* take care of this, before return, s->top_of_stack is already dec. */ - return s->array[s->top_of_stack--]; - - printf("empty stack"); - return 0; -} |
