Bài 4. Hàng đợi
Mô hình
GỒM 2 LOẠI
Queue-ArrayList - Ngăn xếp cài đặt theo danh sách đặc
Queue-LinkedList - Ngăn xếp cài đạt theo danh sách liên kết
Lý thuyết
Source Code
queue.h
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);
}