Một danh sách liên kết dùng để quản lý sinh viên được tổ chức như sau:----- Nội dung ảnh ----- Danh Sách Liên Kết Đơn – K.Trả Một danh sách liên kết dùng để quản lý sinh viên được tổ chức như sau: ```c typedef struct Student { string id; string name; int gpa; bool gender; // false là nữ; true là nam Student *next; } Student; ``` ### Task Hãy lập trình thực hiện các thao tác theo dữ liệu vào để quản lý danh sách sinh viên ### Input - Mỗi dòng có một cấu trúc với các tác nhận: - `ins x y z`: Bổ sung một sinh viên mới có id là x, điểm gpa là y và gender là z vào đầu danh sách. - `upd x y`: Cập nhật hộ số sinh viên có id là x, điểm gpa là y và gender là z. - `del x`: Xóa node có id là x. - `dir`: Hiển thị danh sách sinh viên của danh sách, mỗi sinh viên trên một dòng – theo thứ tự các trường: id-name-gender-gpa vd: a01-TIEN Hoang Anh-1-64 - `cnt x`: Hiển thị số sinh viên trong danh sách trên 1 hàng theo điều kiện - x = 0: Tất cả sinh viên - x = 1: Số sinh viên có gpa >= 80 - x = 2: Số sinh viên có gpa < 80 - `ord`: sắp xếp danh sách theo thứ tự tăng dần của điểm gpa - `chk`: Kiểm tra danh sách sinh viên đã sắp xếp theo điểm gpa hay chưa và hiển thị kết quả như sau: - NO: Nếu chưa sắp xếp - YES: Nếu đã sắp xếp ### Output Tùy vào cấu trúc lệnh nhận được để thực hiện và hiển thị kết quả ### Samples **Input** ``` ins a01 80 1 ins a02 73 1 ins a03 85 0 ins b01 64 1 upd a01 le Van dao upd a02 nguyen Hien thuat upd b01 HoanG anH Tien upd a03 hoa dir ord dir chk ``` **Output** ``` b01-TIEN Hoang Anh-1-64 a03-HOA-0-85 a02-THUAT Nguyen Thien-1-73 a01-DAO Le Van-1-80 YES 2 4 1 ``` |