Cài đặt hàng bằng danh sách liên
kết
kết
Khai báo cần thiết Khai báo cần thiết
typedef ... ElementType; //kiểu phần tử của hàng typedef ... ElementType; //kiểu phần tử của hàng typedef struct Node{
typedef struct Node{
ElementType Element; ElementType Element;
Node* Next; //Con trỏ chỉ ô kế tiếp Node* Next; //Con trỏ chỉ ô kế tiếp };
};
typedef Node* Position; typedef Node* Position; typedef struct{
typedef struct{
Position Front, Rear; Position Front, Rear;
//là hai trường chỉ đến đầu và cuối của hàng //là hai trường chỉ đến đầu và cuối của hàng } Queue;
} Queue;
FRONT REAR
Khởi tạo hàng rỗngKhởi tạo hàng rỗng
Khi hàng rỗng Front va Rear cùng trỏ về 1 vị trí đó chính là ô headerKhi hàng rỗng Front va Rear cùng trỏ về 1 vị trí đó chính là ô header
void MAKENULL_QUEUE(Queue& Q){ void MAKENULL_QUEUE(Queue& Q){ //Cấp phát Header //Cấp phát Header Position Header=(Node*)malloc(sizeof(Node)); Position Header=(Node*)malloc(sizeof(Node)); Header->Next=NULL; Header->Next=NULL; Q.Front=Header; Q.Front=Header; Q.Rear=Header; Q.Rear=Header; } }
Kiểm tra hàng rỗngKiểm tra hàng rỗng
Hàng rỗng nếu Front và Rear chỉ cùng một vị trí là ô Header.Hàng rỗng nếu Front và Rear chỉ cùng một vị trí là ô Header.
int EMPTY_QUEUE(Queue Q){int EMPTY_QUEUE(Queue Q){ int EMPTY_QUEUE(Queue Q){ return (Q.Front==Q.Rear); return (Q.Front==Q.Rear); FRONT REAR NULL Header của hàng
Thêm một phần tử vào hàngThêm một phần tử vào hàng void
void ENQUEUE(ElementType X, Queue& Q){ ENQUEUE(ElementType X, Queue& Q){ Q.Rear->Next=(Node*)malloc(sizeof(Node));
Q.Rear->Next=(Node*)malloc(sizeof(Node));
Q.Rear=Q.Rear->Next;
Q.Rear=Q.Rear->Next;
//Dat gia tri vao cho Rear
//Dat gia tri vao cho Rear
Q.Rear->Element=X;
Q.Rear->Element=X;
Q.Rear->Next=
Q.Rear->Next=NULLNULL;; }
}
Xóa một phần tử ra khỏi hàngXóa một phần tử ra khỏi hàng void DEQUEUE(Queue &Q){
void DEQUEUE(Queue &Q){
if (!EMPTY_QUEUE(Q)){ if (!EMPTY_QUEUE(Q)){ Position T=Q.Front; Position T=Q.Front; Q.Front=Q.Front->Next; Q.Front=Q.Front->Next; free(T); free(T); } } else else
printf("loi: hang rong");
printf("loi: hang rong");
FRONT REAR
. . . NULL