Thông tin tài liệu:
Xây dựng lớp Queue (không dùng Queue của collection) dùng chứa đối tượng bất kỳ bằngmảng List hoặc ArrayList:- Hàm tạo, hàm tạo sao chép: khởi tạo Queue
Nội dung trích xuất từ tài liệu:
Bài tập ôn thi C Sharp BÀI TẬP ÔN CHUYÊN ĐỀ CSHARP ---o0o---I. NGÔN NGỮ LẬP TRÌNH CSHARP:Bài 1. Xây dựng lớp Queue (không dùng Queue của collection) dùng chứa đối tượng bất kỳ bằngmảng List hoặc ArrayList:- Hàm tạo, hàm tạo sao chép: khởi tạo Queue- Xây dựng các phương thức sau: Phương thức Ý nghĩa Thêm 1 phần tử vào đầu Queue Enqueue Lấy 1 phần tử ở cuối ra khỏi Queue Dequeue Lấy 1 phần tử ở đầu Queue PeakFront Lấy 1 phần tử ở cuối Queue PeakRear Kiểm tra Queue rỗng IsEmpt yHỗ trợ Queue sao cho có thể dùng lệnh for-each để duyệt toàn bộ Queue (kế thừ từ giao diệnIEnumerable)class CQueue : IEnumerable{ // khởi tạo danh sách kiểu đối tượng T List q = new List(); // constructor mặc định public CQueue(){ } // constructor sao chép public CQueue(CQueue a) { q = a.q; } // Thêm 1 phần tử vào đầu Queue public void Enqueue(T a) { q.Insert(0, a); } // Lấy 1 phần tử ở cuối ra khỏi Queue public T Dequeue() { T tmp = q[q.Count - 1]; q.RemoveAt(q.Count - 1); return tmp; } // Lấy 1 phần tử ở đầu Queue public T PeakFront() { return q[0]; } // Lấy 1 phần tử ở cuối Queue public T PeakRear() { return q[q.Count - 1]; } // Kiểm tra Queue rỗng public bool IsEmpty() { if (q.Count == 0) return true; return false; } #region IEnumerable Members public IEnumerator GetEnumerator() { //throw new NotImplementedException(); foreach (T tmp in q) { yield return tmp; // return mà không thoát khỏi for, vẫn làm hết for } } #endregion #region IEnumerable Members System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { //throw new NotImplementedException(); return GetEnumerator(); } #endregion}class Program{ static void Main(string[] args) { CQueue q = new CQueue(); Console.WriteLine(q.IsEmpty()); q.Enqueue(4); q.Enqueue(2); q.Enqueue(4); q.Enqueue(5); Console.WriteLine(q.IsEmpty()); foreach (int i in q) { Console.WriteLine(i); } Console.WriteLine(-----------------------------); CQueue q1 = new CQueue(); Console.WriteLine(q1.IsEmpty()); q1.Enqueue(a); q1.Enqueue(z); q1.Enqueue(t); q1.Enqueue(b); Console.WriteLine(q1.IsEmpty()); foreach (String i in q1) { Console.WriteLine(i); } }}:Bài 3. Cho lớp HocSinh và LopHoc có khai báo như sau }class SinhVien{ class LopHoc private string maSo; { private string hoTen; private string maLop; private string tenKhoa; private DateTime ngaySinh; private List dsSinhVien; private LopHoc lopHoc; …… }Giả sử có hàm Main được cài đặt như sau:static void Main(string []args){LopHoc lop1 = new LopHoc(“TM0101”,”CNTT”); LopHoclop2 = new LopHoc(“MV0101”,”CNTT”);lop1.themSinhVien(new SinhVien(“001”,”Nguyễn Văn A”,1989,2,18));lop1.themSinhVien(new SinhVien(“002”,”Trần Thị B”,1989,5,2));SinhVien sv = lop1.timSinhVien(“002”);if(sv!=null) sv.chuyenLop(lop2);Console.WriteLine(“Hiển thị thông tin lớp {0}:”, lop1.MaLop);Console.WriteLine(“{0}”, lop1);Console.WriteLine(“Hiển thị thông tin lớp {0}:”, lop2.MaLop);Console.WriteLine(“{0}”, lop2);}Kết quả xuất ra trong màn hình Console: (giả sử năm hiện tại của hệ thống là 2011)Hãy cài đặt thêm để thỏa mãn hàm Main được khai báo như trên.public class SinhVien{ // khai bao cac bien thanh vien private string maSo; private string hoTen; private DateTime ngaySinh; private LopHoc lopHoc; // constructor co tham so public SinhVien(string ma, string hoten, int nam, int thang, int ngay) { this.maSo = ma; this.hoTen = hoten; this.ngaySinh = new DateTime(nam, thang, ngay); } public string MaSo // property cho maSo { get { return maSo; } set { maSo = value; } } public string HoTen // property cho HoTen { get { return hoTen; } set { hoTen = value; } } public DateTime NgaySinh // property cho NgaySinh { get { return ngaySinh; } set { ngaySinh = v ...