Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 13: Hàng đợi - Queues

10 6 0
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 13: Hàng đợi - Queues

Đang tải... (xem toàn văn)

Thông tin tài liệu

m ột danh sách (cuối hàng đợi) và việc lấy ra một phần tử được th ực hiện ở cuối danh sách (đầu hàng)..  Hàng đợi còn được gọi là danh sách FIFO (First In First Out).[r]

(1)

Giảng viên: TS Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580

Email:

Cấu trúc liệu giải thuật

(2)

ội dung:

13.1 Khái niệm hàng đợi.

13.2 Xây dựng sử dụng Queue.

13.3 Ví dụ hàng đợi. Tham khảo:

1. Data structures and Algorithms Stacks.htm, Kyle Loudon Mastering

Algorithms,

2. Chapter Stacks and Queues, Elliz Horowitz – Fundamentals of Data

Structures.

(3)(4)

sách, việc thêm phần tử thực đầu

một danh sách (cuối hàng đợi) việc lấy phần tử thực cuối danh sách (đầu hàng).

 Hàng đợi gọi danh sách FIFO (First In First Out).

(5)

 Đối với hàng đợi, số lượng ứng dụng có nhiều ngăn xếp.

 Ví dụ máy tính thực nhiệm vụ, có nhiều hàng đợi được sử dụng:

 hàng đợi máy in,  việc truy xuất đĩa,  sử dụng CPU.

 chuyển đổi từ Infix sang Prefix.

 Phần tử đầu hàng đợi phục vụ trước, phần tử thường gọi front hay head Phần tử thêm vào gọi rear

(6)

Một hàng đợi phần tử kiểu T chuỗi nối tiếp phần tử T kèm theo số tác vụ sau:

1. Tạo đối tượng hàng rỗng.

2. Thêm một phần tử vào hàng, giả sử hàng đợi chưa đầy

(phần tử liệu thêm vào cuối hàng).

3. Loại phần tử khỏi hàng, giả sử hàng chưa rỗng (phần tử

bị loại phần tử đầu hàng, thường phần tử vừa xử lý xong).

(7)(8)

Thành phần liệu cho Queue:

MaxEntry: Kích thước Queue.

QueueEntry: Kiểu liệu dành cho phần tử Queue.

Một số phương thức Queue:

 QueueClassL();

 int isEmpty();

 int isFull();

 int Dequeue(QueueEntry *value);

 int Enqueue(QueueEntry value);

 int Peek(QueueEntry *value);

(9)

Khai báo lớp Queue (dạng tuyến tính):

template<class QueueEntry> // Lớp mẫu cho kiểu liệu Queue

class QueueClassL{ // Định nghĩa tên lớp

public:

QueueClassL(); // Hàm tạo lớp, khởi tạo thông tin cho Queue

int isEmpty(); // Queue rỗng → 1, ngược lại → 0

int isFull(); // Queue đầy → 1, ngược lại → 0

int Dequeue(QueueEntry *value); // Lấy phần tử Queue

int Enqueue(QueueEntry value); // Thêm phần tử vào Queue

int Peek(QueueEntry *value); // Xem giá trị đầu Queue

void makeEmpty(); // Làm rỗng Queue

private:

(10)

template<class QueueEntry> QueueClassL<QueueEntry>

::QueueClassL(void) {

front=rear=-1; }

template<class QueueEntry>

int QueueClassL<QueueEntry> ::isEmpty()

{

if(front==rear) return 1;

Ngày đăng: 09/03/2021, 07:17

Tài liệu cùng người dùng

Tài liệu liên quan