Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Napisz program z podziałem na funkcje z parametrami, w którym zaimplementujesz stos na bazie tablicy. Liczbę elementów tablicy dobierz samodzielnie. Przetestuj tę implementację. Twój program powinien wykrywać sytuacje, kiedy stos jest pusty i kiedy jest pełny.
- */
- #include <stdio.h>
- #define MAX_SIZE_STACK 2
- //Stack max size check
- #if MAX_SIZE_STACK < 2
- #error "MAX_SIZE_STACK has to be greater than 2"
- #endif
- typedef enum {false, true} bool;
- struct stack {
- int stack[MAX_SIZE_STACK];
- int top;
- };
- bool stack_full(struct stack array_stack)
- {
- if(array_stack.top >= MAX_SIZE_STACK-1)
- return true;
- else
- return false;
- }
- bool stack_empty(struct stack array_stack)
- {
- if(array_stack.top <= -1)
- return true;
- else
- return false;
- }
- int push(struct stack *array_stack, int number)
- {
- if(!stack_full(*array_stack)){
- array_stack->top++;
- array_stack->stack[array_stack->top] = number;
- return number;
- }
- else{
- fprintf(stderr, "Stack is full\n");
- return -1;
- }
- }
- int pop(struct stack *array_stack)
- {
- if(!stack_empty(*array_stack)){
- int tmp = array_stack->stack[array_stack->top];
- array_stack->top--;
- return tmp;
- }
- else{
- fprintf(stderr, "Stack is empty\n");
- return -1;
- }
- }
- void print_stack(struct stack array_stack)
- {
- if(!stack_empty(array_stack)){
- for(int i = 0; i < array_stack.top+1; i++){
- printf("%d ", array_stack.stack[i]);
- }
- printf("\n");
- }
- else
- fprintf(stderr, "Stack is empty\n");
- }
- int main(void)
- {
- struct stack array_stack;
- array_stack.top = -1;
- push(&array_stack, 1);
- push(&array_stack, 2);
- pop(&array_stack);
- print_stack(array_stack);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement