Queue - Node
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include <stdio.h> #include <malloc.h> #define EMPTY 0 typedef struct node { int data; struct node * link; } queue; queue * get_node() { queue * tmp; tmp = (queue *)malloc(sizeof(queue)); tmp->link = EMPTY; return tmp; } void enqueue(queue ** front, queue ** rear, int data) { queue * tmp; tmp = *rear; *rear = get_node(); (*rear)->data = data; if (*front == EMPTY) { *front = *rear; } else { (tmp)->link = *rear; } } void dequeue(queue ** front, queue ** rear) { queue * tmp; tmp = *front; *front = tmp->link; free(tmp); } int peek(queue ** front) { queue *tmp; if (*front == EMPTY) { printf("Stack is Empty"); return NULL; } return (*front)->data; } void main() { queue * front = EMPTY; queue * rear = EMPTY; enqueue(&front, &rear, 10); enqueue(&front, &rear, 20); enqueue(&front, &rear, 30); enqueue(&front, &rear, 40); printf("%d\n", peek(&front)); dequeue(&front, &rear); printf("%d\n", peek(&front)); dequeue(&front, &rear); printf("%d\n", peek(&front)); dequeue(&front, &rear); printf("%d\n", peek(&front)); } | cs |
'Data Structure > Sample Code' 카테고리의 다른 글
Tree (0) | 2015.08.19 |
---|---|
Queue 응용 (0) | 2015.08.19 |
LinkedList (0) | 2015.08.19 |
Stack (0) | 2015.08.19 |