Cài đặt hàng bằng danh sách liên

Một phần của tài liệu Các kiểu dữ liệu trừu tượng cơ bản (Trang 68 - 71)

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

Một phần của tài liệu Các kiểu dữ liệu trừu tượng cơ bản (Trang 68 - 71)

Tải bản đầy đủ (PPT)

(80 trang)