-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueue-using-array.c
More file actions
executable file
·148 lines (139 loc) · 2.67 KB
/
queue-using-array.c
File metadata and controls
executable file
·148 lines (139 loc) · 2.67 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
#include <stdio.h>
#include <stdlib.h>
#define MAKS 5
typedef char dataType;
typedef struct
{
dataType data[MAKS];
int count, rear, front;
} queue;
void inisialisasi(queue *);
void enqueue(dataType, queue *);
dataType dequeue(queue *);
int full(queue *);
int empty(queue *);
dataType isi();
void isiq(queue *);
void baca(queue *);
void tampil(queue *);
int main()
{
printf("Menu Queue\n");
printf("1. Isi Queue (Enqueue)\n");
printf("2. Baca Queue (Dequeue)\n");
printf("3. Tampilkan Queue (LIFO)\n\n");
queue datax;
int menu;
inisialisasi(&datax);
do
{
printf("Masukkan menu: ");
scanf(" %d", &menu);
fflush(stdin);
switch(menu)
{
case 1: enqueue(isi(), &datax); break;
case 2: baca(&datax); break;
case 3: tampil(&datax); break;
case 4: printf("Bye!!\n"); exit(0); break;
default: printf("Menu salah!\n"); break;
}
} while(menu != 4);
return 0;
}
void isiq(queue *q)
{
if(full(q))
printf("Queue penuh!\n");
else
enqueue(isi(), q);
}
void baca(queue *q)
{
if(empty(q))
printf("Queue kosong!\n");
else
printf("%c\n", dequeue(q));
}
void tampil(queue *q)
{
int c, i;
c=q->count;
if(c==0)
printf("Queue kosong!\n");
else
{
while(c!=0)
{
if(q->front < q->rear)
{
for(i=q->front; i<q->rear; i++)
{
printf("%c\n", q->data[i]);
c--;
}
}
else
{
for(i=q->front; i<MAKS; i++)
{
printf("%c\n", q->data[i]);
c--;
}
for(i=0; i<q->rear; i++)
{
printf("%c\n", q->data[i]);
c--;
}
}
}
}
}
void inisialisasi(queue *q)
{
q->count=0;
q->front=0;
q->rear=0;
}
dataType isi()
{
dataType x;
printf("Masukkan data: ");
scanf(" %c", &x);
fflush(stdin);
return x;
}
void enqueue(dataType x, queue *q)
{
if(full(q))
printf("Queue penuh!\n");
else
{
q->data[q->rear]=x;
q->rear=(q->rear+1)%MAKS;
++(q->count);
}
}
dataType dequeue(queue *q)
{
if(empty(q))
{
printf("Queue kosong!\n");
return 99;
}
else
{
int data=q->data[q->front];
q->front=(q->front+1)%MAKS;
--(q->count);
return data;
}
}
int full(queue *q)
{
return (q->count==MAKS);
}
int empty(queue *q)
{
return (q->count==0);
}