Advertisement
Guest User

stack

a guest
Oct 22nd, 2016
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. typedef struct StackNode {
  6.     int value;
  7.     struct StackNode* prev;
  8.  } StackNode;
  9.  
  10. typedef struct Stack {
  11.    struct StackNode* top;
  12. } Stack;
  13.  
  14.  
  15. StackNode* NewStackNode(int value)
  16. {
  17.     /*creating StackNode*/
  18.     StackNode* Node = malloc(sizeof(StackNode));
  19.     Node -> value = value;
  20.     Node -> prev = NULL;
  21.  
  22.     return Node;
  23. }
  24.  
  25. Stack* NewStack(int value)
  26. {
  27.     /*creating StackNode*/
  28.     StackNode* Node = NewStackNode(value);
  29.  
  30.     /*creating stack*/
  31.     Stack* New = malloc(sizeof(Stack));
  32.     New -> top = Node;
  33.  
  34.     return New;
  35. }
  36.  
  37. void StackPush(Stack* s, int value)
  38. {  
  39.     StackNode* Node = NewStackNode(value);
  40.  
  41.     Node -> prev = s-> top;
  42.     s -> top = Node;
  43. }
  44.  
  45. int StackPop(Stack* s)
  46. {  
  47.     int output = -1;
  48.    
  49.     StackNode* freeNode;
  50.     if(s->top){
  51.  
  52.         freeNode = s -> top;
  53.         output = s->top->value;
  54.  
  55.         s -> top = s -> top -> prev;
  56.         free(freeNode);
  57.     }
  58.     return output;
  59. }
  60.  
  61. void StackRelease(Stack *s)
  62. {
  63.     while(s-> top){
  64.         StackPop(s);
  65.     }
  66.     if(s)free(s);
  67. }
  68.  
  69. int main(void)
  70. {
  71.     Stack* s = NewStack(6);
  72.     int val;
  73.  
  74.     StackPush(s, 7);
  75.     StackPush(s, 8);
  76.  
  77.     //StackRelease(s);
  78.  
  79.     val = StackPop(s);
  80.     printf("%d\n", val);
  81.  
  82.     val = StackPop(s);
  83.     printf("%d\n", val);
  84.  
  85.     val = StackPop(s);
  86.     printf("%d\n", val);
  87.  
  88.     StackRelease(s);
  89.  
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement