3
|
1 #interface "Queue.h"
|
|
2
|
|
3 Queue* createSingleLinkedQueue(struct Context* context) {
|
|
4 struct Queue* queue = new Queue(); // Allocate Queue interface
|
|
5 struct SingleLinkedQueue* singleLinkedQueue = new SingleLinkedQueue(); // Allocate Queue implement
|
|
6 queue->queue = (union Data*)singleLinkedQueue;
|
|
7 singleLinkedQueue->top = new Element();
|
|
8 singleLinkedQueue->last = singleLinkedQueue->top;
|
|
9 queue->clear = C_clearSingleLinkedQueue;
|
|
10 queue->put = C_putSingleLinkedQueue;
|
|
11 queue->take = C_takeSingleLinkedQueue;
|
|
12 queue->isEmpty = C_isEmptySingleLinkedQueue;
|
|
13 return queue;
|
|
14 }
|
|
15
|
|
16 __code clearSingleLinkedQueue(struct SingleLinkedQueue* queue, __code next(...)) {
|
|
17 queue->top = NULL;
|
|
18 goto next(...);
|
|
19 }
|
|
20
|
|
21 __code putSingleLinkedQueue(struct SingleLinkedQueue* queue, union Data* data, __code next(...)) {
|
|
22 Element* element = new Element();
|
|
23 element->data = data;
|
|
24 element->next = NULL;
|
|
25 queue->last->next = element;
|
|
26 queue->last = element;
|
|
27 goto next(...);
|
|
28 }
|
|
29
|
|
30 .....
|