7
|
1 __code pushSingleLinkedStack(struct Single LinkedStack* stack,union Data* data, __code next(...)) {
|
|
2 Element* element = new Element();
|
|
3 element->next = stack->top;
|
|
4 element->data = data;
|
|
5 stack->top = element;
|
|
6 goto next(...);
|
|
7 }
|
|
8 __code popSingleLinkedStack(struct Single LinkedStack* stack, __code next(union Data* data, ...)) {
|
|
9 if (stack->top) {
|
|
10 data = stack->top->data;
|
|
11 stack->top = stack->top->next;
|
|
12 } else {
|
|
13 data = NULL;
|
|
14 }
|
|
15 goto next(data, ...);
|
|
16 }
|
|
17
|
|
18 __code pop2SingleLinkedStack(struct SingleLinkedStack* stack, __code next(union Data* data, union Data* data1, ...)) {
|
|
19 if (stack->top) {
|
|
20 data = stack->top->data;
|
|
21 stack->top = stack->top->next;
|
|
22 } else {
|
|
23 data = NULL;
|
|
24 }
|
|
25 if (stack->top) {
|
|
26 data1 = stack->top->data;
|
|
27 stack->top = stack->top->next;
|
|
28 } else {
|
|
29 data1 = NULL;
|
|
30 }
|
|
31 goto next(data, data1, ...);
|
|
32 } |