-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqueue.c
109 lines (95 loc) · 1.88 KB
/
queue.c
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
#define INT 1
#define FLOAT 2
#define STRING 3
#define MAXSIZE 100
using namespace std;
struct stackelement {
int etype;
union
{
int ival;
float fval;
char* pval;
}element;
};
struct queue {
int rear, front;
stackelement items[MAXSIZE];
};
bool empty(queue* s) {
return (s->front == s->rear) ? true : false;
}
void enqueue(queue* s, int data) {
if (s->rear == MAXSIZE - 1) {
s->rear = 0;
}
else s->rear += 1;
if (s->rear == s->front) {
cout << "queue overflow" << endl;
exit(1);
}
s->items[s->rear].etype = 1;
s->items[s->rear].element.ival = data;
s->front = 0;
}
void enqueue(queue* s, float data) {
if (s->rear == MAXSIZE - 1) {
s->rear = 0;
}
else s->rear += 1;
if (s->rear == s->front) {
cout << "queue overflow" << endl;
exit(1);
}
s->items[s->rear].etype = 2;
s->items[s->rear].element.fval = data;
s->front = 0;
}
void enqueue(queue* s, char* data) {
if (s->rear == MAXSIZE - 1) {
s->rear = 0;
}
else s->rear += 1;
if (s->rear == s->front) {
cout << "queue overflow" << endl;
exit(1);
}
s->items[s->rear].etype = 3;
s->items[s->rear].element.pval = data;
s->front = 0;
}
stackelement dequeue(queue* s) {
if (s->front == MAXSIZE - 1) {
s->front = 0;
}
else s->front += 1;
return s->items[s->front];
}
void printqueue(queue* s) {
if (s->front == s->rear) {
cout << "queue is empty" << endl;
}
else for (int i = s->front; i <= s->rear; i++) {
if (s->items[i].etype == 1) {
cout << s->items[i].element.ival << endl;
}
if (s->items[i].etype == 2) {
cout << s->items[i].element.fval << endl;
}
if (s->items[i].etype == 3) {
cout << s->items[i].element.pval << endl;
}
}
}
int main() {
queue niyo;
char y[6] = "nihat";
niyo.front = MAXSIZE-1; niyo.rear = MAXSIZE - 1;
enqueue(&niyo, 12.5f);
enqueue(&niyo, 1546);
enqueue(&niyo, y);
printqueue(&niyo);
dequeue(&niyo);
printqueue(&niyo);
}