-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueue_func.h
More file actions
151 lines (131 loc) · 2.88 KB
/
queue_func.h
File metadata and controls
151 lines (131 loc) · 2.88 KB
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#ifndef QUEUE_FUNC_H
#define QUEUE_FUNC_H
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct Queue {
int items[MAX];
float fItems[MAX];
char cItems[MAX];
int front,rear;
int cfront,crear;
int ffront,frear;
} Queue;
Queue q;
void initQueue() {
q.front=q.rear=0;
q.cfront=q.crear=0;
q.ffront=q.frear=0;
}
int isFullI(){
return q.rear==MAX;
}
int isFullF() {
return q.frear == MAX;
}
int isFullC() {
return q.crear == MAX;
}
int isEmptyI() {
return q.rear==q.front;
}
int isEmptyF() {
return q.frear==q.ffront;
}
int isEmptyC() {
return q.crear==q.cfront;
}
void pushI(int value) {
if (isFullI()) {
printf("Queue overflow: Cannot push %d, int queue is full\n", value);
return;
}
q.items[q.rear++] = value;
}
void pushF(float value) {
if (isFullF()) {
printf("Queue overflow: Cannot push %.2f, float queue is full\n", value);
return;
}
q.fItems[q.frear++] = value;
}
void pushC(char value) {
if (isFullC()) {
printf("Queue overflow: Cannot push '%c', char queue is full\n", value);
return;
}
q.cItems[q.crear++] = value;
}
int popI() {
if (isEmptyI()) {
printf("Queue underflow: Cannot pop, int queue is empty\n");
return -1;
}
int num=q.items[q.front];
q.items[q.front++]=-1;
if(q.front==q.rear){
q.front=q.rear=0;
}
return num;
}
float popF() {
if (isEmptyF()) {
printf("Queue underflow: Cannot pop, float queue is empty\n");
return -1;
}
float num=q.fItems[q.ffront];
q.fItems[q.ffront++]=-1;
if(q.ffront==q.frear){
q.ffront=q.frear=0;
}
return num;
}
char popC() {
if (isEmptyC()) {
printf("Queue underflow: Cannot pop, char queue is empty\n");
return -1;
}
char num=q.cItems[q.cfront];
q.cItems[q.cfront++]=-1;
if(q.cfront==q.crear){
q.cfront=q.crear=0;
}
return num;
}
void printQueueI() {
if (isEmptyI()) {
printf("Int queue is empty\n");
return;
}
for (int i = q.front; i < q.rear; i++) {
printf("%d ", q.items[i]);
}
printf("\n");
}
void printQueueF() {
if (isEmptyF()) {
printf("Float queue is empty\n");
return;
}
for (int i = q.ffront; i < q.frear; i++) {
printf("%f ", q.fItems[i]);
}
printf("\n");
}
void printQueueC() {
if (isEmptyC()) {
printf("Char queue is empty\n");
return;
}
for (int i = q.cfront; i < q.crear; i++) {
printf("%c ", q.cItems[i]);
}
printf("\n");
}
void clearQueue() {
q.front=q.rear=0;
q.ffront=q.frear=0;
q.cfront=q.crear=0;
printf("All stacks cleared\n");
}
#endif