Professional Documents
Culture Documents
Hàng Đ I Queue
Hàng Đ I Queue
Hàng Đ I Queue
Hàng đợi (queue) là một cấu trúc dữ liệu hoạt động theo
I. Hàng đợi(queue) cơ chế FIFO (First In First Out), tạm dịch là “vào trước
là gì ? ra trước”. Có nghĩa là phần tử nào được thêm hàng đợi
trước thì sẽ được lấy ra trước.
3
Có thể hình dung hàng đợi như một đoàn người xếp hàng mua vé.
Người nào xếp hàng trước sẽ được mua vé trước và ra khỏi hàng để
nhường vị trí cho người xếp hàng ngay phía sau.
○ Có thể xem hàng đợi (queue) là một kiểu danh sách có 2 phép
toán đặc trưng là:
isFull(): kiểm tra queue có đầy chưa. Số lượng phần tử trong queue do người dùng quy
định. Tùy trường hợp chúng ta mới cần sử dụng hàm isFull().
○ Trong lập trình, có 2 cách thường dùng để xây dựng queue là sử dụng mảng (array) và
danh sách liên kết (linked list).
II. Cài đặt queue
trên mảng
6
Các thao tác cần có khi cài đặt hàng đợi queue bằng
mảng đó là:
Trước khi đi vào chi tiết các thao tác trên ta có hàng
đợi khi cài đặt bằng mảng sẽ được khai báo như sau:
8
○ Hàm void Init(QUEUE &q) dưới đây nhận QUEUE &q là hàng đợi
cần khởi tạo và thực hiện gán int front = 0; và int rear = -1;
○ Trước khi thực hiện việc lấy phần tử trong hàng đợi ra, ta cần 9
phải đảm bảo việc kiểm tra queue đó là không rỗng. Nếu queue
là rỗng thì không được phép lấy phần tử.
3. Hàm add và
hàm remove với
queue bằng mảng
○ Add chính là thao tác thêm phần tử mới vào trong hàng đợi. Việc
12
thêm phần tử mới vào hàng đợi queue luôn luôn đặt phần tử được
thêm vào cuối hàng đợi.
○ Trước khi thêm vào hàng đợi ta sẽ kiểm tra xem hàng đợi đó đã
3.1 Hàm add đầy hay chưa, nếu chưa đầy thì thực hiện việc thêm phần tử vào
cuối hàng đợi.
trong queue
○ Hàm void Add(QUEUE &q, int x) nhận QUEUE &q là hàng đợi
cần thêm phần tử và int x là giá trị phần từ cần thêm vào cuối
hàng đợi.
○ Thao tác remove chính là thao tác lấy phần tử trong hàng đợi ra13
và đồng thời xóa đi phần tử đó. Việc lấy phần tử của hàng đợi
luôn được thực hiện bằng cách lấy phần tử ở đầu hàng đợi đó ra.
3.2 Hàm remove ○ Hàm int Remove(QUEUE &q) nhận QUEUE &q là hàng đợi cần
trong queue thực hiện lấy ra phần tử đầu, hàm này thực hiện trả về phần tử
đầu tiên của hàng đợi và đồng thời xóa đi phần tử vừa được lấy
ra.
4.Nhập xuất phần tử trong mảng hàng đợi queue
Để nhập được N phần tử vào trong hàng đợi ta cần sử dụng lại hàm
void Add() ở trên và kết hợp với vòng lặp for. Để thực hiện lấy ra tất
cả phần tử cũng tương tự như vậy.
○ Hàm nhập N phần tử vào trong hàng đợi cài đặt bằng mảng như
sau:
4.Nhập xuất phần tử trong mảng hàng đợi queue
○ Hàm xuất ra những phần tử có trong hàng đợi nhưng không xóa đi
chúng được biểu diễn như sau:
16
5.Bài tập
- Thêm 1 sinh viên vào Queue
- Lấy 1 sinh viên ra khỏi Queue
- Kiểm tra xem Queue còn bao nhiêu sinh viên
21
Hàm trả về độ dài chuỗi của
mảng A
5.Bài tập
cắt chuỗi A, n ký tự từ bên trái
cắt chuỗi A, n ký tự từ bên phải
=> cắt chuỗi A, n ký tự từ vị trí thứ k (k từ 1)
trả về true nếu k có trong mảng A và ngược lại là false
nhập vào số k và chèn k vào đầu mảng A
=> xóa phần tử đầu tiên của mảng A có n phần tử
sắp xếp lại mảng A tăng dần/giảm dần