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);
} }