// clear stack int clear(stack *my_stack) { Stack_OK(my_stack); if (Stack_OK(my_stack)) Stack_dump(my_stack); else { my_stack->data = 0; errno = 0; return 0; } return -1; }
// add element int push (stack *my_stack, double i) { Stack_OK(my_stack); if (!full(my_stack)) { my_stack->data[(my_stack->size)++] = i; my_stack->top = i; Stack_OK(my_stack); return 0; } else errno = E2BIG; return -1; }
void CStack::Assert_OK()const { if (!Stack_OK()) { Stack_Dump(); assert(!"Bad object CStack"); } }
int full(stack *my_stack) { if (Stack_OK(my_stack)) Stack_dump(my_stack); if(my_stack->size == my_stack->Max) return -1; else return 0; }
// delete stack int Destroy(stack *my_stack) { if (Stack_OK(my_stack)) return -1; free(my_stack->data); free(my_stack); errno = 0; return 0; }
//show last element double topp(stack *my_stack) { errno = 0; Stack_OK(my_stack); if (!errno) return my_stack->top; else Stack_dump(my_stack); return -1; }
// delete element double pop(stack *my_stack) { errno = 0; Stack_OK(my_stack); if ((!errno) && (!empty(my_stack))) { return my_stack->data[--my_stack->size]; } else return NAN; }
void Dump (struct Stack_t *This) { int i; assert (Stack_OK(This)); printf("array ="); for (i= 0; i < This->size; i++) { printf (" %d ", This->array[i]); } printf("\n"); printf("top = %d\n", This->top); printf("size = %d\n", This->size); }
// get stack_size int stack_size(stack *my_stack) { if(Stack_OK(my_stack)) return -1; return my_stack->size; }
void Push (struct Stack_t *This, int element){ assert(Stack_OK(This)); This->array[This->top++] = element; }
int Pop(struct Stack_t *This){ assert(Stack_OK(This)); assert(This->top >= 1); return This->array[--(This->top)]; }