Facebook
From Social Guinea Pig, 4 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 201
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. typedef struct{
  5.  
  6.     int* data;
  7.     int top;
  8.     int size;
  9. } Stack;
  10.  
  11. void push(Stack *s, int element);
  12. int pop(Stack *s);
  13. void destroy(Stack *s);
  14. void init(Stack *s);
  15. bool isEmpty(Stack *s);
  16.  
  17. int main()
  18. {
  19.     return 0;
  20. }
  21.  
  22.  
  23. void push(Stack *s, int element)
  24. {
  25.     if(s->top == s->size -1)
  26.     {
  27.         int *temp = (int*)malloc(sizeof(int) * s->size * 2);
  28.         if (temp == NULL)
  29.         {
  30.             printf("unable to allocate");
  31.             return;
  32.         }
  33.         int i=0;
  34.         for(i = 0; i<= s ->top; i++)
  35.         {
  36.             temp[i] = s->data[i];
  37.         }
  38.         free(s->data);
  39.         s-> size *=2;
  40.     }
  41.     s-> data[++s->top] = element;
  42. }
  43.  
  44. int pop(Stack *s)
  45. {
  46.     if(s->top == -1)
  47.     {
  48.         return -1;
  49.     }
  50.     else
  51.     {
  52.         return s->data[s->top--];
  53.     };
  54. }
  55.  
  56. void destroy(Stack *s)
  57. {
  58.     int i;
  59.     for(i= s->top; i>=0; i--)
  60.     {
  61.         free(s-> data);
  62.     }
  63. }
  64.  
  65. void init(Stack *s)
  66. {
  67.     Stack *newStack = (int*)malloc(sizeof(int)*2);
  68.     newStack->top = -1;
  69.     *s =newStack;
  70. }
  71. bool isEmpty(Stack *s)
  72. {
  73.     if(s->top == -1)
  74.     {
  75.         return true;
  76.     }
  77.     else
  78.     {
  79.         return false;
  80.     }
  81.    
  82. }