Advertisement
Tobiahao

STOS_01

Mar 15th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. /*
  2.  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.
  3. */
  4.  
  5. #include <stdio.h>
  6. #define MAX_SIZE_STACK 2
  7.  
  8. //Stack max size check
  9. #if MAX_SIZE_STACK < 2
  10. #error "MAX_SIZE_STACK has to be greater than 2"
  11. #endif
  12.  
  13. typedef enum {false, true} bool;
  14.  
  15. struct stack {
  16.     int stack[MAX_SIZE_STACK];
  17.     int top;
  18. };
  19.  
  20. bool stack_full(struct stack array_stack)
  21. {
  22.     if(array_stack.top >= MAX_SIZE_STACK-1)
  23.         return true;
  24.     else
  25.         return false;
  26. }
  27.  
  28. bool stack_empty(struct stack array_stack)
  29. {
  30.     if(array_stack.top <= -1)
  31.         return true;
  32.     else
  33.         return false;
  34. }
  35.  
  36. int push(struct stack *array_stack, int number)
  37. {
  38.     if(!stack_full(*array_stack)){
  39.         array_stack->top++;
  40.         array_stack->stack[array_stack->top] = number;
  41.         return number;
  42.     }
  43.     else{
  44.         fprintf(stderr, "Stack is full\n");
  45.         return -1;
  46.     }
  47. }
  48.  
  49. int pop(struct stack *array_stack)
  50. {
  51.     if(!stack_empty(*array_stack)){
  52.         int tmp = array_stack->stack[array_stack->top];
  53.         array_stack->top--;
  54.         return tmp;
  55.     }
  56.     else{
  57.         fprintf(stderr, "Stack is empty\n");
  58.         return -1;
  59.     }
  60. }
  61.  
  62. void print_stack(struct stack array_stack)
  63. {
  64.     if(!stack_empty(array_stack)){
  65.         for(int i = 0; i < array_stack.top+1; i++){
  66.             printf("%d ", array_stack.stack[i]);
  67.         }
  68.         printf("\n");
  69.     }
  70.     else
  71.         fprintf(stderr, "Stack is empty\n");
  72. }
  73.  
  74. int main(void)
  75. {
  76.     struct stack array_stack;
  77.     array_stack.top = -1;
  78.    
  79.     push(&array_stack, 1);
  80.     push(&array_stack, 2);
  81.     pop(&array_stack);
  82.     print_stack(array_stack);
  83.    
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement