Với các sinh viên chuyên nghành tin học thì cụm từ Cấu trúc dữ liệu (Data Structure) không còn là xa lạ. Đây là một môn học bắt buộc và sẽ là thực sự khó cho bất kỳ sinh viên nào nếu không có sự chuẩn bị kỹ lưỡng và dành cách tiếp cận tích cực cho môn học này. Vậy Cấu trúc dữ liệu là gì? Show
Cấu trúc dữ liệu là cách lưu trữ, tổ chức dữ liệu có thứ tự, có hệ thống để dữ liệu có thể được sử dụng một cách hiệu quả. Dưới đây là danh sách các bài hướng dẫn trong loạt bài Cấu trúc dữ liệu và Giải thuật: Cấu trúc dữ liệu và giải thuật Cấu trúc dữ liệu là gì?
Một số khái niệm về Giải thuật
Quảng cáo Cấu trúc dữ liệu mảng (Array)
Danh sách liên kết - Linked List
Ngăn xếp & Hàng đợi
Một số Giải thuật tìm kiếm
Quảng cáo Một số Giải thuật sắp xếp
Cấu trúc dữ liệu đồ thị (Graph)
Cấu trúc dữ liệu cây
Đệ qui (Recursion)
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS. Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube: Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi. Cho hai đa thức A bậc n và đa thức B bậc m được ghi lại tương ứng trong file dathuc1.in và dathuc2.in theo khuôn dạng sau:
Hãy viết chương trình tính hiệu hai đa thức A và B và ghi lại đa thức kết quả vào file ketqua.out theo khuôn dạng như trên. Ví dụ với đa thức Hôm nay mình sẽ hướng dẫn các bạn giải quyết một bài toán cấu trúc dữ liệu và giải thuật, đồng thời cũng chia sẻ source code luôn nhé! Đây là một bài tập cấu trúc dữ liệu và giải thuật tổng hợp bao gồm nhiều cấu trúc dữ liệu và giải thuật khác nhau được sử dụng trong 1 bài tập. Hi vọng các bạn có những kiến thức thật bổ ích. Đề bài tập cấu trúc dữ liệu và giải thuậtChúng ta sẽ áp dụng cấu trúc dữ liệu & giải thuật để giải bài tập Xây dựng phần mềm thi trắc nghiệm. Ta sẽ tổ chức các danh sách cho bài tập cấu trúc dữ liệu và giải thuật này như sau: – Danh sách môn học : cây nhị phân tìm kiếm (MAMH (C15), TENMH). – Danh sách Lop : mảng con trỏ có tối đa 500 lớp(MALOP, TENLOP, con trỏ dssv): con trỏ dssv trỏ đến danh sách sinh viên thuộc lớp đó. – Danh sách sinh viên : danh sách liên kết đơn (MASV, HO, TEN, PHAI, password, con trỏ): con trỏ sẽ trỏ đến điểm các môn đã thi trắc nghiệm. – Danh sách Điểm thi (danh sách liên kết đơn) (Mamh, Diem) – Danh sách Câu hỏi thi : chứa các câu hỏi nguồn của các môn học (Id, Mă MH, Nội dung, A, B, C, D, Đáp án); trong đó A, B, C, D là 4 chọn lựa tương ứng với nội dung câu hỏi. Danh sách câu hỏi thi là 1 mảng con trỏ có tối đa 2000 câu, và luôn có sắn thứ tự theo mã môn học. Chương trình có các chức năng sau : a/ Đăng nhập dựa vào mã sinh viên, password. Nếu tài khoản đăng nhập là GV, pass là GV thì sẽ có toàn quyền. b/ Nhập lớp. c/ In danh sách lớp. d/ Nhập sinh viên của lớp : nhập vào mã lớp trước, sau đó nhập các sinh viên vào lớp đó. e/ Nhập môn học: cho phép cập nhật (thêm / xóa / hiệu chỉnh ) thông tin của môn học. f/ Nhập câu hỏi thi (Id là số ngẫu nhiên do chương trình tự tạo ). g/ Thi Trắc nghiệm ( trước khi thi hỏi người thi môn thi, số câu hỏi thi, số phút thi-sau đó lấy ngẫu nhiên các câu hỏi trong danh sách câu hỏi thi của môn. h/ In chi tiết các câu hỏi đã thi 1 môn học của 1 sinh viên. i/ In bảng điểm thi trắc nghiệm môn học của 1 lớp (nếu có sinh viên chưa thi thì ghi “Chưa thi”. Lưu ý: Chương trình cho phép lưu các danh sách vào file; Kiểm tra các điều kiện làm dữ liệu bị sai. Có thể tự thiết kế thêm danh sách để đáp ứng yêu cầu của đề tài. Hướng dẫn giải bài tậpBài tập cấu trúc dữ liệu và giải thuật này sử dụng rất nhiều cấu trúc dữ liệu và giải thuật khác nhau. Chúng ta cùng đi giải quyết nhé. Tổ chức các danh sách lưu trữ dữ liệuỞ trên bạn sẽ phải tạo các danh sách thuộc các kiểu: mảng, danh sách liên kết đơn, cây nhị phân…Cái này thì chắc hẳn ai cũng biết làm rồi. Lưu ý: Để đơn giản thì các danh sách thuộc dạng mảng như danh sách câu hỏi và danh sách lớp ta nên cấp phát tối đa có thể lưu trữ. Ta cần lưu danh sách câu hỏi và danh sách lớp vào file. Khi khởi động chương trình thì có thể lấy dữ liệu lên để sử dụng. Sau khi kết thúc chương trình cần lưu lại để cập nhật lại dữ liệu vào file để lần chạy tới chượng trình có thể sử dụng dữ liệu để cập nhật. Bạn có thể tham khảo một số tài liệu ở đây để hiểu được bài tập cấu trúc dữ liệu & giải thuật này:
Xây dựng các chức năng của chương trìnhDưới đây là các chức năng của bài tập cấu trúc dữ liệu và giải thuật xây dựng phần mềm thi trắc nghiệm, mỗi chức năng đều có hướng dẫn chi tiết cho bạn. a) Chức năng đăng nhập.Với chức năng này bạn cần lấy dữ liệu của danh sách lớp từ file. Sau đó thực hiện các bước như sau:
b) Chức năng nhập lớp.Các bạn thực hiện như sau:
Lưu ý: Cần bắt trường hợp người dùng để trống( hay nhập chuỗi rỗng “”). c) Chức năng in danh sách lớp.Với chức năng này thì đơn giản, bạn chỉ cần duyệt từng lớp trong danh sách lớp. Sau đó từ lớp ta sẽ lấy danh sách sinh viên và in tất cả các sinh viên thuộc lớp đó ra màn hình. d) Chức năng nhập sinh viên của lớp.Các bạn thực hiện tuần tự như sau:
Lưu ý: Các bạn nên bắt lỗi các trường hợp người dùng nhập sai để chương trình có thể hoàn thiện hơn. e/ Chức năng nhập môn học và cập nhật môn học.Với chức năng thêm môn học: Các bạn chỉ cần tạo một node môn học sau đó chèn vào cây nhị phân tìm kiếm. Các bạn có thể đọc kĩ mục cây nhị phân ở trên để hiểu rõ cách chèn hơn. Một chú ý nhỏ là mình sẽ lấy tên môn học làm khóa cho một node. Với chức năng xóa môn học: Các bạn chỉ cần nhập tên môn học sau đó tiến hành duyệt cây và xóa node. Với chức năng hiệu chỉnh: Các bạn chỉ cần xóa node môn học đó và bắt người dùng nhập lại tên môn học và mã môn học là được( xóa node và lại thêm node mới ý! ). f/ Chức năng nhập câu hỏi thi.Bài tập cấu trúc dữ liệu và giải thuật này có chức năng nhập câu hỏi, với chức năng này thì bạn sẽ thực hiện như sau:
g/ Chức năng thi Trắc nghiệmBài tập cấu trúc dữ liệu và giải thuật này yêu cầu bạn lấy câu hỏi theo trình tự sau:
Sau khi bạn đã có một danh sách các câu hỏi thi theo môn đã nhập thì việc tiếp theo chúng ta sẽ bắt người dùng nhập số câu hỏi muốn thi ( không được lớn hơn số lượng câu hỏi trong danh sách). Việc tiếp theo chúng ta chỉ cần chọn ngẫu nhiên các câu hỏi có trong danh sách mà thôi. Tham khảo cách chọn số ngẫu nhiên tại đây! Sao khi đã có đánh dấu những câu hỏi được chọn thì tiến hành in câu hỏi ra màn hình và bắt người dùng nhập đáp án. Bước tiếp theo, bạn cần so sánh đáp án của câu hỏi với đáp án người dùng nhập để tính điểm. Một lưu ý khi giải quyết bài tập cấu trúc dữ liệu và giải thuật này:
h/ Chức năng in chi tiết các câu hỏi đã thi 1 môn học của 1 sinh viên.Chức năng này chỉ dành cho sinh viên. Ở trên các bạn đã lưu lại các câu hỏi đã thi và lựa chọn của sinh viên bây giờ ta chỉ cần tìm file đó và hiển thị lên thôi. Cần kiểm tra nếu file không tồn tại tức là sinh viên đó chưa thi. Bạn tìm file có tên như sau: Tên file = mã sinh viên + tên môn thi i/ Chức năng in bảng điểm thi trắc nghiệm môn học của 1 lớp.Bài tập cấu trúc dữ liệu và giải thuật này cũng yêu cầu phải in bảng điểm, các bước thực hiện như sau:
Chia sẻ source codeDưới đây là lời giải bâì tập cấu trúc dữ liệu và giải thuật Xây dựng phần mềm thi trắc nghiệm của mình, bạn đọc có thể tải về tại đây. Nếu các bạn có thắc mắc gì xin để lại comment phía dưới! |