Lưu trữ móc nối của hàng đợ

Một phần của tài liệu BÀI GIẢNG: HÀNG ĐỢI pps (Trang 43 - 52)

Hàng đợi mảng vòng

3.5.3 Lưu trữ móc nối của hàng đợ

 Định nghĩa và khai báo cấu trúc dữ liệu

 Định nghĩa các phép toán và chương trình thực hiện các phép toán cơ bản

Định nghĩa và khai báo cấu trúc dữ liệu

 Mỗi phần tử của hàng đợi móc nối là một bản ghi gồm có 2 trường

data chứa thông tin của phần tử

next là một con trỏ,trỏ vào nút đứng sau trong hàng đợi

45/52

Định nghĩa và khai báo cấu trúc dữ liệu

 Hàng đợi được định nghĩa là một bản ghi gồm 2 con trỏ trỏ vào phần tử đầu hàng và phần tử cuối hàng

 Con trỏ next của phần tử cuối hàng đợi nhận giá trị NULL báo hiệu kết thúc hàng đợi

a1 … a2 an NULL

Định nghĩa và khai báo cấu trúc dữ liệu

 Khai báo cấu trúc :

struct node

{ <kiểu phần tử> ptu; node *next;

} ;

struct queue

{ node *front, *rear ; } q ;

47/52

Các phép toán cơ bản

 Khởi tạo hàng đợi rỗng : creat(q)

 Kiểm tra hàng đợi rỗng : empty(q)

 Chèn phần tử x vào cuối hàng đợi : add(x,q)

Các phép toán cơ bản

 Khởi tạo hàng đợi rỗng

void creat(queue &q) {

q.front = NULL; }

49/52

Các phép toán cơ bản

 Kiểm tra hàng đợi rỗng

int empty(queue q) {

return q.front ==NULL ; }

Các phép toán cơ bản

Chèn phần tử x vào cuối hàng đợi

void add(<kiểu phần tử> x, queue &q) { node *p=new node;

p->ptu=x ; p->next=NULL ; if (q.front==NULL) q.front =p; else q.rear->next=p;

q.rear=p; }

51/52

Các phép toán cơ bản

 Loại phần tử ở đầu hàng đợi gán cho x

void del(queue &q , <kiểu phần tử> &x) { if (!empty(q))

{ x= q.front->ptu;

node *p=q.front ; q.front =p->next ; delete(p);

} }

Một phần của tài liệu BÀI GIẢNG: HÀNG ĐỢI pps (Trang 43 - 52)