Phân tích bài toán 1.Yêu cầu của bài toán 2.Các lớp, các thuộc tính, các phương thức của lớp và chức năng của chúng: IV.. Phân tích thời gian chạy của từng phương thức có trong các lớp V
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VÂN TẢIKHOA CÔNG NGHỆ THÔNG TIN -o0o -
Bài tập lớn môn học CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Giảng viên hướng dẫn: ThS.Phạm Xuân Tích
Nhóm thực hiện: Nhóm… Lớp CNTT6-K61
Danh sách sinh viên tham gia:
Hà Nội, tháng 12 năm 2021
Trang 2Nội dung
I Đề bài
II Phân tích bài toán
1.Yêu cầu của bài toán
2.Các lớp, các thuộc tính, các phương thức của lớp và chức năng của chúng:
IV Phân tích thời gian chạy của từng phương thức có trong các lớp
V Tài liệu tham khảo
Trang 3I Đề bài
1 Xây dựng lớp Queue bằng 2 cách: Mảng và danh sách liên kết
2 Mô phỏng hoạt động của Queue bằng cách xây dựng chương trình sau: Bạn được cho một hàng đợi rỗng và một số truy vấn với hàng đợi này Các truy vấn là những truy vấn cơ bản của hàng đợi: Đẩy vào, lấy ra, in ra phần tử ở đỉnh, các truy vấn có dạng:
⦁ 1 n: Đẩy số nguyên n vào hàng đợi
⦁ 2 Loại bỏ phần tử ở đầu hàng đợi (nếu hàng đợi rỗng thì thao tác này
không có hiệu lực)
⦁ 3 In ra phần tử ở đỉnh hàng đợi (không lấy ra khỏi hàng đợi, nếu hàng
đợi rỗng thì in ra Empty!)
Dữ liệu vào
⦁ Dòng đầu chứa số nguyên dương TT là số truy vấn;
⦁ TT dòng tiếp theo, mỗi dòng chứa một truy vấn Giới hạn:
2
3 Output #1:
7 Empty!
Trang 43 Cho một dãy gồm N số nguyên: a1, a2, … , an và dãy B rỗng Trên dãy B thực hiện N phép biến đổi Với phép biến đổi thứ i:
- Thêm ai vào cuối dãy B
- Đảo ngược thứ tự các phần tử của dãy B
Bạn hãy thực hiện tìm kết quả của dãy B sau N phép biến đổi
Dữ liệu vào:
- Dòng đầu tiên chưa số nguyên dương N
- Dòng tiếp theo chứ N số nguyên dương a1, a2, … , an
II.Phân tích bài toán
1.Yêu cầu của bài toán:
Sử dụng mảng và danh sách liên kết đơn để khai báo lớp Queue( hàng đợi)
2.Các lớp, các thuộc tính, các phương thức của lớp và chức năng của chúng: 2.1 QueueClassArray:
- Thuộc tính:
+count(int) : kích thước hiện tại của hàng đợi+capacity(int): kích thước tối đa của hàng đợi( mặc định là 100000)+arr(*int) : mảng động lưu trữ phần tử
+front(int): vị trí của phần tử đầu tiên
Trang 5+rear(int): vị trí của phần tử cuối cùng
- Phương thức:
+ Queue(): Phương thức khởi tạo không đối số
+ ~Queue(): Phương thức hủy bỏ một Queue
+ void enqueue(int x): đẩy x vào cuối Queue
Trang 6+ void dequeue(): Loại bỏ phần tử đầu của queue
Trang 7+ int size(): trả về kích thước hiện tại của Queue
+ void peek(): trả về phần tử đầu của Queue
Trang 9Kết thúc
Trang 10+ int peek(): trả về phần tử đầu tiên của Queue+ void deQueue(): Xóa phần tử đầu tiên của danh sách
Trang 11III.Cài đặt các lớp và hàm main bằng C++ 3.1 Code QueueClassArray:
Trang 143.2 Code QueueClassLinkedList
Trang 163.3 Demo:
3.3.1: QueueClassArray:}
#include <bits/stdc++.h>
#include "cau1-array.h" using namespace std;
q.dequeue();
}
}
else
Trang 20IV Phân tích thời gian chạy của từng phương thức có trong các lớp
4.1 ClassQueueArray:
- Phương thức:
+ Queue(): O(1)+ ~Queue(): O(1)+ void enqueue(int data): O(1)+ int size(): O(1)
+ void dequeue(): O(1)+ bool isEmpty(): O(1)+ int peek(): O(1)+ isFull(): O(1)
V Tài liệu tham khảo
- Bài làm có tham khảo bài giảng của giảng viên ThS Phạm Xuân Tích và cáctrang web gitbub.com, stackoverflow.com, codelearn.io