Bài 4. Hàng đợi

Mô hình

GỒM 2 LOẠI

Lý thuyếtopen in new window

Source Code

queue.hopen in new window

CẤU TRÚC

#define Max_length 50
typedef struct{
    int Data[Max_length];
    int Front;
    int Rear;
}Queue;

KHỞI TẠO RỘNG HÀNG ĐỢI

void makeNullQueue(Queue *Q){
    Q->Front = 0;
    Q->Rear = 0;
}

HIỂN THỊ HÀNG ĐỢI

void displayQueue(Queue Q){
    for(int i = Q.Front ; i < Q.Rear ; i++){
        printf("%d ",Q.Data[i]);
    }
}

NHẬP N PHẦN TỬ VÀO HÀNG ĐỢI

void inputQueue(int n,Queue *Q){
    for (int i = 0; i < n; i++){
        scanf("%d",&Q->Data[i]);
    }
    Q->Front = 0;
    Q->Rear = n;
}

CHÈN PHẦN TỬ X VÀO VỊ TRÍ P TRONG HÀNG ĐỢI

void insertQueue(int x,int p,Queue *Q){
    if(p < 0 || p > Q->Rear){
        printf("Postion Invalid !!!");
    }
    else if(Q->Rear == Max_length){
        printf("Full Queue!!!");
    }
    else{
        Q->Data[p] = x;
        Q->Rear++;
    }
}

TRẢ V VỊ TRÍ CỦA PHẦN TỬ X

int locateQueue(int x,Queue *Q){
    for(int i = Q->Front ; i < Q->Rear ; i++){
        if(Q->Data[i] == x){
            return i;
        }
    }
    return -1;
}

XOÁ PHẦN TỬ TẠI VỊ TRÍ P TRONG HÀNG ĐỢI

void deleteQueue_byPos(int p,Queue *Q){
    for(int i = p ; i < Q->Rear ; i++){
        Q->Data[i] = Q->Data[i+1];
    }
    Q->Rear--;
}

XOÁ PHẦN TỬ X TRONG PHẦN TỬ

void deleteQueue_byValue(int x,Queue *Q){
    int p = locateQueue(x,Q);
    deleteQueue_byPos(p,Q);
}
Cập nhật lúc :
Tác giả: Zenfection, Zenfection