Bài giảng Cấu trúc dữ liệu: Hàng đợi - TS. Lê Minh Trung & Th.S Lương Trần Ngọc Khiết
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu: Hàng đợi - TS. Lê Minh Trung & Th.S Lương Trần Ngọc Khiết TS. Lê Minh Trung – ThS Lương Trần Ngọc KhiếtKhoa Công nghệ Thông tin, Đại học Sư phạm TP. HCMHàng đợi (Queue) Sử dụng mảng Sử dụng con trỏ Ứng dụng của hàng đợi Mô tả queue Một queue là một cấu trúc dữ liệu mà việc thêm vào được thực hiện ở một đầu (rear) và việc lấy ra được thực hiện ở đầu còn lại (front) Phần tử vào trước sẽ ra trước – FIFO (First In First Out)Bus Stop QueueBusStop front rear rear rear rear rear Lấy 1 người ra khỏi QueueBus Stop QueueBusStop front rear rear rear Bus Stop QueueBusStop front rear rear Bus Stop QueueBusStop front rear rear Thêm một người vào Queue. Queue là một cấu trúc FIFO (First-In, First-Out). Thiết kế của Queuetemplateclass Queue{public:Queue(void); //phương thức khởi tạoQueue(const Queue &source); //phương thức khởi tạo~Queue(void); //phương thức hủybool IsEmpty() const; //kiểm tra queue rỗngbool IsFull() const; //kiểm tra queue đầyvoid Enqueue(NodeType &item); //thêm phần tử vào cuối queuevoid Dequeue(); //lấy phần tử ra khỏi đầu queueNodeType &Peek() const; //xem phần tử đầu queuevoid Clear(); //xóa sạch các phần tử trong queueint GetSize() const; //trả về kích cỡ của queue}; Cài đặt Queue sử dụng mảnghttp://www.cs.usfca.edu/~galles/visualization/QueueArray.html Thiết kế Queue dùng mảngconst int MAX =20;templateclass Queue{public: Queue(void); //phương thức khởi tạo ~Queue(void); //phương thức hủy bool IsEmpty() const;//kiểm tra rỗng bool IsFull() const;//kiểm tra đầy void Enqueue(const NodeType& item);//thêm phần tử vào cuối queue void Dequeue();//lấy phần tử ra từ đầu queue NodeType &Peek();//xem phần tử ở đầu queue void Clear();//xóa nội dung của queue int GetSize() const;//trả về kích cỡ của queueprivate: int front, rear; //đầu và cuối queue int count; //số phần tử của queue NodeType data[MAX];};Queue là array vòng (circular array)Array vòng với ngôn ngữ C++ Xem array như là một vòng: phần tử cuối của array nối với phần tử đầu của array Tính toán vị trí kề: i = ((i + 1) == MAX) ? 0 : (i + 1); if ((i + 1) == MAX) i = 0; else i = i + 1; i = (i + 1) % MAX;Điều kiện biên của queue vòng Các phương thứctemplate templateQueue::Queue(void) bool Queue::IsEmpty(){ const{ count=0; front =0; return count ==0; rear = MAX-1; }} templatetemplate bool Queue::IsFull() const{void Queue::Clear(){ return count ==MAX; count=0; front =0; } rear = MAX-1;for(int i=0; iThêm phần tử vào Queue Thêm một phần tử Di chuyển ‘rear’ một đơn vị theo chiều kim đồng hồ. Gán phần tử vào data[rear]. 16Phương thức Enqueuetemplatevoid Queue::Enqueue(const NodeType &item){ if(!IsFull()){ rear = (rear +1) % MAX; count ++; data[rear] = item; }else{ throw exception(Queue is full); }}Gỡ phần tử ra khỏi Queue Gỡ bỏ một phần tử Di chuyển front một đơn vị theo chiều kim đồng hồ. 18Phương thức Dequeuetemplatevoid Queue::Dequeue(){ if(!IsEmpty()){ front = (front +1) % MAX; count --; }else{ throw exception(Queue is empty); }}templateNodeType &Queue::Peek(){ return data[front];}Thử nghiệm#include Queue.cpp#include Queue.h#include #include using namespace std;void main(){Queue queue;for(int i=1;i
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu Data Structures Hàng đợi Mô tả queue Bus Stop QueueGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 318 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 163 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 150 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 124 0 0 -
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
42 trang 74 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 74 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 73 0 0 -
49 trang 72 0 0
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hà
67 trang 70 0 0 -
54 trang 70 0 0
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Phần 1 - ThS. Hoàng Thế Phương
128 trang 67 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Ngô Công Thắng
8 trang 66 0 0 -
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Lê Văn Vinh
67 trang 57 1 0 -
Giáo trình CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - Chương 1
5 trang 51 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - ThS. Trịnh Quốc Sơn (ĐH Công nghệ Thông tin)
20 trang 50 0 0 -
Cấu trúc dữ liệu và Ngôn ngữ lập trình C
261 trang 44 0 0 -
Đề kiểm tra giữa học kì 1, môn : Cấu trúc dữ liệu và giải thuật
3 trang 42 1 0 -
514 trang 35 0 0