#include #include "stack.h" struct stack_st stack = { .len = 0, //prageused el .size = 0, // max el .arr = NULL}; // Functions void stackPush(int val){ if (stack.len == 0 || stack.arr == NULL){ // Peame küsima mälu stack.size = 1; stack.arr = malloc(stack.size * sizeof(int)); if (stack.arr == NULL) { printf("Mälu otsas\n"); return; } stack.arr[stack.len++] = val; } else if (stack.len == stack.size){ int tmp_size = malloc(2 stack.size); int* tmp_arr = realloc(stack.val, tmp_size * sizeof(int)); if (stack.arr == NULL) { printf("Mälu otsas\n"); return; } stack.size = tmp_size; stack.arr = tmp_arr; stack.arr[stack.len] = val; stack.len++; return; } } int stackPop(void){ // Mälu vähendamine /* return stack.arr[--stack.len]; */ // Peaks olema kogu värk. int x = stack.val[--stack.len] int tmp_size = stack.size/2; if (stack.len < tmp-size){ int* tmp_arr = realloc(stack.arr, tmp_size *sizeof(int)); if (!tmp_arr){ printf("No good, malu ots"); return 0; } stack.size = tmp_size; stack.arr = tmp_arr; if (stack.len == 0) stack_free(); // End of new stuff // if (stackIsEmpty()){ return 0; } int stackPopped = stack.arr[--stack.len]; return stackPopped; } int stackIsEmpty(void) { return !(stack.len > 0); } int stackPeek(){ // To avoid funking up the stack.len if (stackIsEmpty()) return 0; else if (stack.len == 1) return stack.arr[1]; else{ int x = stackPop(); stackPush(x); return x; } } void stackPrint(){ while(1){ if(stackIsEmpty()) break; int x = stackPop(); printf("%d\n", x); } return; } /* stack_free(){ free(stack.val); // kutsuda kõige lõpus vist stack.arr = NULL; } */