|
1 | 1 | #include "queue.h" |
2 | 2 |
|
3 | 3 |
|
4 | | - |
5 | 4 | int main(){ |
6 | 5 |
|
7 | | - Peek(); |
8 | | - Enqueue(7); |
9 | | - Peek(); |
| 6 | + Queue_Type* q1 = create(q1); |
| 7 | + Peek(q1); |
| 8 | + Enqueue(q1, 7); |
| 9 | + Peek(q1); |
10 | 10 |
|
11 | 11 | int dequeued_val; |
12 | | - Dequeue(&dequeued_val); |
13 | | - Peek(); |
| 12 | + Dequeue(q1, &dequeued_val); |
| 13 | + Peek(q1); |
14 | 14 |
|
15 | | - Dequeue(&dequeued_val); |
16 | | - Enqueue(2); |
17 | | - Enqueue(4); |
18 | | - Peek(); |
| 15 | + Dequeue(q1, &dequeued_val); |
| 16 | + Enqueue(q1, 2); |
| 17 | + Enqueue(q1, 4); |
| 18 | + Peek(q1); |
| 19 | + Dequeue(q1, &dequeued_val); |
19 | 20 |
|
20 | 21 | return 0; |
21 | 22 | } |
22 | 23 |
|
23 | | -void Enqueue (int val){ |
| 24 | +Queue_Type* create(Queue_Type* q){ |
| 25 | + |
| 26 | + q = (Queue_Type*) malloc (sizeof(Queue_Type)); |
| 27 | + |
| 28 | + if (NULL == q){ |
| 29 | + |
| 30 | + printf("create() unsuccessful due to malloc failure\n"); |
| 31 | + return NULL; |
| 32 | + } |
| 33 | + q->first = NULL; |
| 34 | + q->last = NULL; |
| 35 | + return q; |
| 36 | +} |
| 37 | + |
| 38 | +void Enqueue (Queue_Type* q, int val){ |
24 | 39 |
|
25 | 40 | QUEUEMEMBER* qmember = (QUEUEMEMBER*) malloc (sizeof(QUEUEMEMBER)); |
26 | 41 |
|
27 | 42 | if (NULL == qmember){ |
28 | 43 |
|
29 | | - printf ("Enqueue unsuccessful due to malloc() failure.\n"); |
| 44 | + printf ("Enqueue() unsuccessful due to malloc failure.\n"); |
30 | 45 | return; |
31 | 46 | } |
32 | 47 |
|
33 | 48 | qmember->data = val; |
34 | 49 | qmember->ptr = NULL; |
35 | 50 |
|
36 | | - if (NULL == first){ |
| 51 | + if (NULL == q->first){ |
37 | 52 |
|
38 | | - first = qmember; |
| 53 | + q->first = qmember; |
39 | 54 | } |
40 | | - if (NULL == last){ |
| 55 | + if (NULL == q->last){ |
41 | 56 |
|
42 | | - last = first; |
| 57 | + q->last = q->first; |
43 | 58 | } |
44 | 59 | else{ |
45 | 60 |
|
46 | | - last->ptr = qmember; |
47 | | - last = qmember; |
| 61 | + q->last->ptr = qmember; |
| 62 | + q->last = qmember; |
48 | 63 | } |
49 | 64 |
|
50 | 65 | printf("Queue after Enqueue():\n"); |
51 | | - Print(first); |
| 66 | + Print(q); |
52 | 67 | return; |
53 | 68 | } |
54 | 69 |
|
55 | | -void Dequeue (int* dqd_val){ |
| 70 | +void Dequeue (Queue_Type* q, int* dqd_val){ |
56 | 71 |
|
57 | | - if (NULL == first){ |
| 72 | + if (NULL == q->first){ |
58 | 73 |
|
59 | 74 | printf ("Empty Queue. Nothing to Dequeue\n"); |
60 | 75 | return; |
61 | 76 | } |
62 | 77 |
|
63 | | - QUEUEMEMBER* temp = first; |
| 78 | + QUEUEMEMBER* temp = q->first; |
64 | 79 |
|
65 | | - if (first == last){ // when there's only one item in Queue |
| 80 | + if (q->first == q->last){ // when there's only one item in Queue |
66 | 81 |
|
67 | | - last = NULL; |
| 82 | + q->last = NULL; |
68 | 83 | } |
69 | 84 |
|
70 | | - first = first->ptr; |
| 85 | + q->first = q->first->ptr; |
71 | 86 |
|
72 | 87 | *dqd_val = temp->data; |
73 | 88 |
|
74 | 89 | free(temp); |
75 | 90 |
|
76 | 91 | printf("Queue after Dequeue():\n"); |
77 | | - Print(first); |
| 92 | + Print(q); |
78 | 93 | return; |
79 | 94 | } |
80 | 95 |
|
81 | | -void Peek(){ |
| 96 | +void Peek(Queue_Type* q){ |
82 | 97 |
|
83 | | - if (NULL == first){ |
| 98 | + if (NULL == q->first){ |
84 | 99 | printf("Empty Queue. Nothing to peek\n"); |
85 | 100 | return; |
86 | 101 | } |
87 | 102 |
|
88 | | - printf("First item in Queue = %d\nLast item in Queue = %d\n", first->data, last->data); |
| 103 | + printf("First item in Queue = %d\nLast item in Queue = %d\n", q->first->data, q->last->data); |
89 | 104 |
|
90 | 105 | return; |
91 | 106 | } |
92 | 107 |
|
93 | | -void Print(QUEUEMEMBER* beg){ |
| 108 | +void Print(Queue_Type* q){ |
94 | 109 |
|
95 | | - if (NULL == beg){ |
| 110 | + if (NULL == q->first){ |
96 | 111 | printf("Empty Queue. Nothing to print\n"); |
97 | 112 | return; |
98 | 113 | } |
99 | 114 |
|
100 | | - QUEUEMEMBER* iter = beg; |
| 115 | + QUEUEMEMBER* iter = q->first; |
101 | 116 |
|
102 | 117 | while(iter->ptr != NULL){ |
103 | 118 |
|
|
0 commit comments