









Preview text:
lOMoARcPSD| 59149108
BUỔI 4: STACK VÀ QUEUE Mục tiêu:
- Cài ặt Stack và Queue bằng mảng
- Sử dụng lớp Stack và Queue từ thư viện Yêu cầu:
- Sinh viên thực hiện việc lại các nội dung phần A và kiểm tra tính úng ắn oạn chương trình
- Thực hiện bài tập 1 ến 4 phần B
- Nộp file nén lên elearning
A. Cài ặt NganXep và HangDoi
1. Xây dựng lớp NganXep
- Tại cửa sổ Solution Explorer: nhấp chuột phải vào tên project, chọn Add > Class…
Đặt tên lớp là NganXep.cs
- Lớp NganXep: biểu diễn cho một ngăn xếp với kích thước cố ịnh ược xác ịnh bởi
biến tĩnh, không thể thay ổi MAXSIZE.
- Dữ liệu của các phần tử trong ngăn xếp ược lưu trong một mảng có kích thước MAXSIZE.
- Vị trí ỉnh của ngăn xếp ược xác ịnh bởi thuộc tính top và số lượng các phần tử trong
ngăn xếp ược lưu trong count. lOMoARcPSD| 59149108
- Khi NganXep ược tạo ra thì top trỏ ến vị trí -1 và số lượng phần tử trong NganXep bằng 0.
- Các hoạt ộng cơ bản thực hiện trên NganXep:
+ IsEmpty: kiểm tra ngăn xếp rỗng hay không
+ IsFull: Kiểm tra ngăn xếp ầy hay không
+ Push(data): thêm một phần tử có giá trị data vào ỉnh ngăn xếp
+ Pop(): lấy ra và trả về phần tử ở ỉnh ngăn xếp
+ Peek(): trả về giá trị phần tử ở ỉnh ngăn xếp nhưng không loại nó ra khỏi ngăn xếp
+ ToString(): phương thức ghi è, xác ịnh cách biểu diễn dạng chuỗi của NganXep; có
thể ược gọi khi chọn WriteLine hay gọi ToString
- Các thuộc tính ược ịnh nghĩa trong lớp NganXep
- Các phương thức lần lượt ược ịnh nghĩa như sau lOMoARcPSD| 59149108 lOMoARcPSD| 59149108
Kiểm tra lớp vừa tạo NganXep, trong hàm Main thực hiện
Thực hiện thêm các hoạt ộng cơ bản trên NganXep
2. Xây dựng lớp HangDoi
Tạo lớp HangDoi biểu diễn cho một queue với kích thước cố ịnh ược xác ịnh bởi MAXSIZE.
- Dữ liệu của các phần tử trong ngăn xếp ược lưu trong một mảng có kích thước MAXSIZE.
- Dữ liệu của các phần tử ược lưu trong một mảng có kích thước MAXSIZE.
- Vị trí ầu và cuối hành ợi ược xác ịnh bởi thuộc tính front và rear, số lượng các phần
tử ược lưu trong count. lOMoARcPSD| 59149108
- Khi một ối tượng HangDoi ược khởi tạo thì số lượng phần tử = 0, front trỏ ến ô index = 0 và rear = -1.
- Các hoạt ộng cơ bản thực hiện trên HangDoi
+ IsEmpty: kiểm tra hàng ợi rỗng hay không
+ IsFull: Kiểm tra hàng ợi ầy hay không
+ Enqueue(data): thêm một phần tử có giá trị data vào uôi hàng ợi
+ Dequeue(): lấy ra và trả về phần tử ở ầu hàng ợi
+ Peek(): trả về giá trị phần tử ở ầu hàng ợi nhưng không loại nó ra khỏi hàng ợi
+ ToString(): phương thức ghi è, xác ịnh cách biểu diễn dạng chuỗi của HangDoi; có
thể ược gọi khi chọn WriteLine hay gọi ToString
- Các thuộc tính ược ịnh nghĩa trong lớp HangDoi
- Các phương thức ược triển khai cụ thể lOMoARcPSD| 59149108 lOMoARcPSD| 59149108
B. Sử dụng thư viện
1. Lớp Stack thuộc namespace System.Collections.Generic
- Khởi tạo ối tượng của Stack
Stack tŒn_biến = new Stack();
- Các thuộc tính và phương thức cơ bản của Stack Count Số lượng phần tử Clear() Xóa tất cả phần tử Contain (val)
Xác ịnh val có trong ngăn xếp không. Trả về True/False Peek()
Trả về ối tượng ầu ngăn xếp nhưng không loại bỏ nó Pop()
Trả về ối tượng ầu ngăn xếp và loại nó ra khỏi ngăn xếp Push(val)
Thêm phần tử vào ngăn xếp ToArray()
Chuyển ngăn xếp thành mảng
Xem thêm hướng dẫn tại:
https://learn.microsoft.com/en-
us/dotnet/api/system.collections.generic.stack1?view=net-8.0
2. Lớp Queue thuộc namespace System.Collections.Generic
- Khởi tạo ối tượng của Queue
Queue tŒn_biến = new Queue(); lOMoARcPSD| 59149108
- Các thuộc tính và phương thức cơ bản của Queue Count Số lượng phần tử Clear() Xóa tất cả phần tử Contain (val)
Xác ịnh val có trong hàng ợi không. Trả về True/False Dequeue()
Trả về ối tượng ầu hàng ợi và loại bỏ nó khỏi hàng ợi Enqueue(val)
Thêm phần tử vào hàng ợi Peek()
Trả về ối tượng ầu hàng ợi nhưng không
loại bỏ nó khỏi hàng ợi ToArray()
Chuyển hàng ợi thành mảng Bài tập:
1. Sử dụng cấu trúc Stack ể ảo một chuỗi nhập từ bàn phím
Ví dụ: nhập vào “Hello world”
In ra màn hình “world Hello”
2. Sử dụng Stack ể kiểm tra biểu thức sử dụng dấu ngoặc úng hay không. Biểu thức chỉ sử dụng ngoặc ơn.
3. Sử dụng cấu trúc Stack ể chuyển giá trị từ cơ số 10 sang cơ số 2 (thập phân sang nhị phân) và ngược lại.
Xây dựng ứng dụng Winform cho phép người dùng nhập một số nguyên dương vào và
thực hiện chuyển ổi sang số nhị phân.
Ví dụ hoạt ộng của chương trình lOMoARcPSD| 59149108
4. Viết chương trình mô phỏng quy trình xếp hàng ặt vé xem phim như sau:
Hàng ợi A chứa các khách chờ lấy vé (chỉ có tên).
Hàng ợi B chứa các ghế còn trống của rạp (chỉ có số ghế).
Danh sách C chứa danh sách khách ã mua vé (Khách thuộc lớp Customer có tên và ghế).
Lớp Customer ược ịnh nghĩa: lOMoARcPSD| 59149108
Khi chương trình bắt ầu, menu gồm các tùy chọn ược hiển thị 1- Nhập ghế trống
2- Nhập khách hàng (tên) vào hàng ợi 3- Phát vé cho khách hàng
- Nếu còn khách hàng ợi và còn ghế thì thêm khách hàng với số ghế vào C
- Nếu không ủ iều kiện thì thông báo cho người dùng 4- Thoát
5- Trả vé (phần mở rộng, không bắt buộc)
- Nhập vào tên khách hàng muốn trả vé
- Tìm kiếm trong C tên phù hợp
+ Nếu tìm thấy, thêm ghế ứng với khách hàng trả vé vào B, xóa khách hàng khỏi C
+ Nếu không tìm thấy, hiển thị thông báo