Guest User

Untitled

a guest
Dec 11th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. typedef struct {
  2. int edge[1]; //edge array for saving 2 node's data
  3. } element;
  4.  
  5. typedef struct stack *stackPointer;
  6. typedef struct stack {
  7. element data;
  8. stackPointer link;
  9. } stack;
  10. stackPointer top[MAX_STACKS];
  11.  
  12. void initStack();
  13. void push(int i, element item);
  14. element pop(int i);
  15.  
  16. int top_counter = -1;
  17.  
  18. int main()
  19. {
  20. int x, y;
  21.  
  22. initStack();
  23.  
  24. element *data = malloc(sizeof(element));
  25.  
  26.  
  27. top_counter++;
  28. data->edge[0] = 9;
  29. data->edge[1] = 6;
  30.  
  31. push(top_counter, *data);
  32.  
  33.  
  34. top_counter++;
  35. data->edge[0] = 5;
  36. data->edge[1] = 3;
  37.  
  38. push(top_counter, *data);
  39.  
  40. *data = pop(top_counter);
  41. x = data->edge[0];
  42. y = data->edge[1];
  43. printf("<%d,%d>n", x, y);
  44. top_counter--;
  45.  
  46. *data = pop(top_counter);
  47. x = data->edge[0];
  48. y = data->edge[1];
  49. printf("<%d,%d>n", x, y);
  50. top_counter--;
  51.  
  52. // result of this code
  53. // <5, 3>
  54. // <9, 3>
  55. // WHY?!?!?!?!??!
  56.  
  57. }
  58.  
  59.  
  60. void initStack() {
  61. for (int i = 0; i < MAX_STACKS; i++) {
  62. top[i] = NULL;
  63. }
  64.  
  65. }
  66.  
  67. void push(int i, element item) {
  68. // push item to top[i]
  69. stackPointer temp;
  70. temp = (stackPointer)malloc(sizeof(*temp));
  71. temp->data = item;
  72. temp->link = top[i];
  73. top[i] = temp;
  74.  
  75. }
  76.  
  77. element pop(int i) {
  78. stackPointer temp = top[i];
  79. element item;
  80. if (!temp) printf("nStack Emptyn");
  81. item = temp->data;
  82. top[i] = temp->link;
  83. free(temp);
  84. return item;
  85. }
Add Comment
Please, Sign In to add comment