Queue
#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; }
Leave a Comment