Advertisement
MagnusArias

PO1 | Stos C

Nov 6th, 2015
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.76 KB | None | 0 0
  1. // ------------------------------ MAIN.C ------------------------------ //
  2.  
  3. #include <stdio.h>
  4. #include "stack.h"
  5.  
  6.  
  7. int main()
  8. {
  9.     struct Stack s1;
  10.     struct Stack s2;
  11.     int i = 0;
  12.  
  13.     init(&s1); // inicjalizacja dwoch stosow
  14.     init(&s2);
  15.  
  16.     push(&s1, 11);
  17.     push(&s1, 12);
  18.     push(&s1, 13);
  19.  
  20.     push(&s2, 21);
  21.     push(&s2, 22);
  22.  
  23.     push(&s1, 15);
  24.     push(&s1, 16);
  25.     push(&s1, 16);
  26.  
  27.     push(&s2, 24);
  28.     push(&s2, 25);
  29.  
  30.     push(&s1, 17);
  31.     push(&s1, 18);
  32.     push(&s1, 19);
  33.  
  34.     push(&s2, 27);
  35.     push(&s2, 28);
  36.     for (i = 0; !isempty(&s1) && !isempty(&s2); i++)
  37.     {
  38.         printf("%d %d\n", pop(&s1), pop(&s2));
  39.     }
  40.     destroy(&s1);
  41.     destroy(&s2);
  42.     return 0;
  43. }
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50. // ------------------------------ STACK.H ------------------------------ //
  51.  
  52. #include <stdbool.h>
  53.  
  54. struct Stack{
  55.     int top; // gora stosu
  56.     int *dane;
  57.     int size;
  58. };
  59.  
  60. void    init    (struct Stack* s);
  61. void    destroy (struct Stack* s);
  62. void    push    (struct Stack* s, int element);
  63. int     pop (struct Stack* s);
  64. void    clear   (struct Stack* s);
  65. int     isempty (struct Stack* s);
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74. // ------------------------------ STACK.C ------------------------------ //
  75.  
  76. #include <assert.h>
  77. #include <stdlib.h>
  78. #include <stdio.h>
  79. #include <malloc.h>
  80. #include "stack.h"
  81.  
  82. void init(struct Stack* s){
  83.     s->top = 0;
  84.     s->size = 1;
  85.     s->dane = (int*)malloc(sizeof(int) * s->size);
  86. }
  87.  
  88. void destroy(struct Stack* s){
  89.     free(s->dane);
  90. }
  91.  
  92. void clear(struct Stack* s){
  93.     s->top = 0;
  94. }
  95.  
  96. void push(struct Stack* s, int element){
  97.     if (s->size == s->top)
  98.         s->dane = (int*)realloc(s->dane, sizeof(int) * (s->size*= 2));
  99.  
  100.     assert(s->top < s->size);
  101.     s->dane[s->top++] = element;
  102. }
  103.  
  104. int pop(struct Stack* s){
  105.     assert(s->top>0);
  106.     return s->dane[--s->top];
  107. }
  108.  
  109. int isempty(struct Stack* s){
  110.     return s->top == 0 ? 1 : 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement