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

48 20 0
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

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Cấu trúc dữ liệu: Hàng đợi cung cấp cho người học những kiến thức như: Mô tả queue; Bus Stop Queue; Thiết kế của Queue; Cài đặt Queue sử dụng mảng; Thiết kế Queue dùng mảng; Array vòng với ngôn ngữ C++; Điều kiện biên của queue vòng; Phương thức Enqueue;... Mời các bạn cùng tham khảo!

TS Lê Minh Trung – ThS Lương Trần Ngọc Khiết Khoa Công nghệ Thông tin, Đại học Sư phạm TP HCM Hàng đợi (Queue)  Sử dụng mảng  Sử dụng trỏ  Ứng dụng hàng đợi Mô tả queue  Một queue cấu trúc liệu mà việc thêm vào thực đầu (rear) việc lấy thực đầu lại (front)  Phần tử vào trước trước – FIFO (First In First Out) Bus Stop Queue Bus Stop front rear rear rear rear  Lấy người khỏi Queue rear Bus Stop Queue Bus Stop front rear rear rear Bus Stop Queue Bus Stop front rear rear Bus Stop Queue Bus Stop front rear rear  Thêm người vào Queue  Queue cấu trúc FIFO (First-In, First-Out) Thiết kế Queue template class Queue { public: Queue(void); //phương thức khởi tạo Queue(const Queue &source); //phương thức khởi tạo ~Queue(void); //phương thức hủy bool IsEmpty() const; //kiểm tra queue rỗng bool IsFull() const; //kiểm tra queue đầy void Enqueue(NodeType &item); //thêm phần tử vào cuối queue void Dequeue(); //lấy phần tử khỏi đầu queue NodeType &Peek() const; //xem phần tử đầu queue void Clear(); //xóa phần tử queue int GetSize() const; //trả kích cỡ queue }; Cài đặt Queue sử dụng mảng http://www.cs.usfca.edu/~galles/visualization/QueueArray.html Đảm bảo an toàn trỏ C++  Destructor (phương thức hủy):  Sẽ gọi trước đối tượng kết thúc thời gian sống  Dùng xóa hết vùng liệu  Copy constructor:  Sẽ gọi khởi tạo biến lúc khai báo, truyền liệu tham trị  Sao chép nguồn thành vùng liệu  Assignment operator (toán tử gán):  Sẽ gọi gán đối tượng vào đối tượng khác  Xóa vùng liệu đích đồng thời chép nguồn thành vùng liệu Hủy vùng nhớ cấp cho Queue template void Queue::Clear(){ while (!IsEmpty()) { Dequeue(); } } template Queue::~Queue(void) { Clear(); } Sao chép vùng liệu – Ví dụ copy.top_node copy_node a b c a b c new_copy new_top Sao chép vùng liệu template void Queue::Copy(const Queue &source, Node* & destFront, Node * & destRear){ Node *curS, *curD; curS= source.front; if(curS == nullptr)return; //queue rỗng destFront = curD = new Node(curS -> item); while(curS -> next != nullptr){//vẫn phần tử cần duyệt curS = curS -> next; curD -> next = new Node(curS ->item); curD = curD -> next; } destRear = curD; } Copy constructor toán tử gán template Queue::Queue(const Queue &source) { Copy(source, front, rear); } template void Queue::operator=(const Queue &source) { Clear(); Copy(source, front, rear); } Phương thức khác template bool Queue::IsEmpty() const { return front==nullptr; } template NodeType &Queue::Peek() const { return front -> item; } Thử nghiệm #include "Queue.cpp" #include "Node.cpp" #include #include #include using namespace std; void main(){ Queue q; q.Enqueue("I"); q.Enqueue("love !"); q.Enqueue("you"); while(!q.IsEmpty()){ cout item); while(curS -> next != nullptr){//vẫn phần tử cần duyệt curS = curS -> next; curD -> next = new Node(curS -> item); curD = curD -> next; } destRear = curD;... Queue  Queue cấu trúc FIFO (First-In, First-Out) Thiết kế Queue template class Queue { public: Queue(void); //phương thức khởi tạo Queue(const Queue &source); //phương

Ngày đăng: 09/08/2021, 17:44

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

Tài liệu liên quan