Queue
unknown
c_cpp
2 years ago
1.9 kB
9
Indexable
#include <stdio.h>
#define MAX 7
typedef struct {
int queue[MAX];
int front, rear;
} QUEUE; //queue là cấu trúc gồm 1 mảng queue với kích thước tối đa là max, front rear để theo dõi đầu và đuôi của hàng đợi (queue)
void init(QUEUE *q) //đây là hàng đợi rỗng ban đầu
{
q->front = 0;
q->rear = -1;
}
int isEmpty(QUEUE q) //kiểm tra xem hàng đợi có rỗng hay không
{
return q.front > q.rear;
}
int isFull(QUEUE q)
{
return q.rear == MAX - 1; //kiểm tra xem hàng đợi có đầy hay không
}
void enqueue(QUEUE *q, int x) { //thêm phần tử 'x' vào hàng đợi
if (isFull(*q))
{
printf("Hàng đợi đầy\n");
}
else
{
q->rear++; //tăng phần tử đuôi lên 1
q->queue[q->rear] = x; //gán phần tử đuôi (rear) ở chỗ hàng đợi (queue) vào biến x trong mảng queue
}
}
int dequeue(QUEUE *q) { //lấy phần tử ra khỏi hàng đợi
if (isEmpty(*q))
{
printf("Hàng đợi trống\n");
return -1;
}
else
{
int x = q->queue[q->front];
q->front++; //tăng front
return x;
}
}
void display(QUEUE q) { //hiển thị hàng đợi (queue), in ra
if (isEmpty(q))
{
printf("Hàng đợi trống\n");
}
else
{
for (int i = q.front; i <= q.rear; i++) //vòng lặp for
printf("%d ", q.queue[i]); //giá trị của phần tử tại vịtrí i
printf("\n");
}
}
int main() {
QUEUE q; //tạo hàng đợi rồi khởi tạo bằng init
init(&q);
int element;
printf("Nhập phần tử vào hàng đợi queue (nhập 0 để dừng):\n");
while (1) {
scanf("%d", &element);
if (element == 0)
break;
enqueue(&q, element);
}
display(q);
printf("Phần tử bị loại bỏ là: %d\n", dequeue(&q));
display(q);
return 0;
}Editor is loading...
Leave a Comment