Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct {
- int edge[1]; //edge array for saving 2 node's data
- } element;
- typedef struct stack *stackPointer;
- typedef struct stack {
- element data;
- stackPointer link;
- } stack;
- stackPointer top[MAX_STACKS];
- void initStack();
- void push(int i, element item);
- element pop(int i);
- int top_counter = -1;
- int main()
- {
- int x, y;
- initStack();
- element *data = malloc(sizeof(element));
- top_counter++;
- data->edge[0] = 9;
- data->edge[1] = 6;
- push(top_counter, *data);
- top_counter++;
- data->edge[0] = 5;
- data->edge[1] = 3;
- push(top_counter, *data);
- *data = pop(top_counter);
- x = data->edge[0];
- y = data->edge[1];
- printf("<%d,%d>n", x, y);
- top_counter--;
- *data = pop(top_counter);
- x = data->edge[0];
- y = data->edge[1];
- printf("<%d,%d>n", x, y);
- top_counter--;
- // result of this code
- // <5, 3>
- // <9, 3>
- // WHY?!?!?!?!??!
- }
- void initStack() {
- for (int i = 0; i < MAX_STACKS; i++) {
- top[i] = NULL;
- }
- }
- void push(int i, element item) {
- // push item to top[i]
- stackPointer temp;
- temp = (stackPointer)malloc(sizeof(*temp));
- temp->data = item;
- temp->link = top[i];
- top[i] = temp;
- }
- element pop(int i) {
- stackPointer temp = top[i];
- element item;
- if (!temp) printf("nStack Emptyn");
- item = temp->data;
- top[i] = temp->link;
- free(temp);
- return item;
- }
Add Comment
Please, Sign In to add comment