Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Kỹ thuật lập trình Đề thi tham khảo môn cấu trúc dữ liệu và giải thuật 6...

Tài liệu Đề thi tham khảo môn cấu trúc dữ liệu và giải thuật 6

.PDF
6
442
57

Mô tả:

ĐẠI HỌC THÁI NGUYÊN ĐỀ THI HẾT HỌC PHẦN KHOA CÔNG NGHỆ THÔNG TIN Môn thi: Cấu trúc dữ liệu và giải thuật; Hệ: Chính quy ……………… Thời gian chuẩn bị: 45 phút, không kể thời gian giao đề Mã đề thi: 06 Câu 1( 2điểm) Nêu khái niệm hàng đợi? các cách cài đặt hàng đợi bởi mảng, con trỏ? ưu nhược điểm của từng dạng cài đặt? Câu 2( 5 điểm ) Giả sử ta cần quản lý một danh sách học sinh, mỗi học sinh gồm những thông tin sau: Họ tên, Lớp, Điểm tổng kết, xếp loại học lực . Anh(chị) hãy: 1) Viết dạng cài đặt danh sách trên bằng danh sách liên kết kép. 2) Với cách cài đặt này, viết các chương trình con tương ứng với các yêu cầu sau: a) Tạo danh sách có n học sinh, (n là số nguyên dương nhập từ bàn phím) b) Đếm xem trong danh sách có bao nhiêu sinh viên học lớp “CĐ2C”. c) Hãy xếp loại học lực cho các sinh viên trong danh sách theo các tiêu chí sau: + Nếu: Điểm tổng kết< 5: Xếp loại yếu + Nếu : 5 ≤ Điểm tổng kết ≤6: Xếp loại trung bình + Nếu : 6< Điểm tổng kết <8 : Xếp loại khá + Nếu : Điểm tổng kết ≥8: Xếp loại giỏi d) Sắp sếp danh sách theo trường lớp tăng dần e) In ra màn hình danh sách sinh viên theo từng lớp, Câu 3( 1 điểm ) Anh ( Chị ) hãy nêu một lớp bài toán ứng dụng mà sử dụng cấu trúc dữ liệu hàng đợi giúp việc giải quyết yêu cầu bài toán được thuận lợi hơn ? phân tích bài toán đã nêu để thể hiện rõ điều đó? ……………………Hết………………………. Thí sinh không được sử dụng tài liệu, không ghi vào đề thi CB coi thi không giải thích gì thêm và nộp lại đề thi cho phòng chức năng theo quy chế của bộ Câu 1 - Hàng đợi là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào hàng đợi được thực hiện ở một đầu (đầu này được gọi là lối sau - Real), còn phép lấy một phần tử ra khỏi hàng đợi được thực hiện ở đầu kia (lối trước - Front) (0.5 đ) - Hai phương pháp cài đặt hàng đợi: Cài đặt bởi mảng: (0.5 đ) const n=maxqueue; type queue= record ele:array[1..n]of item; L,F,count:0..n; end; Ưu điểm: - truy cập nhanh, trực tiếp đến mọi phần tử - Các thao tác dễ thực hiện Nhược điểm: - Gây hiện tượng lãng phí bộ nhớ, hiện tượng này còn được gọi là giữ chỗ để đấy mà không dùng đến - Bị giới hạn bởi không gian trống kế tiếp trong bộ nhớ - Cấu trúc là cấu trúc tĩnh, không gian nhớ được cấp phát trong thanh ghi data, hoặc thanh ghi stack Cài đặt bởi con trỏ: (0.5 đ) type pqueue=^nut; nut= record infor: item; next:pqueue; end; var l,f:pqueue; Ưu điểm: - không có hiện tựợng giữ chỗ để đấy nên không gây lãng phí bộ nhớ - Cấu trúc mang tính động, không gian nhớ cấp phát cho hàng đợi là không gian động, được cấp phát trong heap - Không bị hạn chế bởi không gian trống kế tiép trong bộ nhớ, các phần tử trong hàng đợi có thể nằm ở những vị trí khác nhau tong bộ nhớ, không nhất thiết phải là những vị trí kế tiếp Nhược điểm: - Mỗi nút trong hàng đợi tốn thêm một vùng nhớ chứa con trỏ Ưu nhược điểm của từng dạng cài đặt: (0.5 đ) :Câu 2 + Dạng cài đặt: (0.5 đ) Type Hocsinh = record Hoten: String; Lớp : String; DiemTK: float; xeploai: string; ` Lptr, Rptr: ^ Hocsinh; end; DoubleList = ^Hocsinh; Var L, R: DoubleList; + Tạo danh sách gồm n học sinh: (1 đ) procedure taoDS(var L,R:doublelist); var M: doublelist; begin L:=R:=nil; {khoi tao danh sach rong} write(’nhap so hoc sinh trong danh sách n= ’); readln(n); for i:=1 to n do begin writeln(‘Nhap hoc sinh thu i : ’); write(‘Nhạp ho ten: ’); readln(M^.Hoten); write(‘Nhạp Lớp: ’); readln(M^.lop); write(‘Nhạp Điem tong kết: readln(M^.DiemTK); insert(M,,L, R); end; end; trong đó thủ tục insert(M,L,R): chèn học sinh được trỏ bởi M vào cuối danh sách: procedure Insert(M: doublelist, Var L, R: DoubleList); Var Begin if (L=nil)and(R=nil) then begin M^.Lptr:=nil; M^.Rptr:=nil; L:=M; R:=M; end else begin R^.Rptr:=M; M^.Lptr:=R; M^.Rptr:=nil; R:=M; end; End; + Đếm xem có bao nhiêu học sinh học lớp “CD2C”: (1 đ) ’); - Sử dụng biến đếm, ban đầu = 0 , đếm số người học lớp “CD2C” - Sử dụng con trỏ phụ M duyệt từ đầu đến cuối danh sách, sinh nào có: M^.lop = “CD2C” thì tăng biến đếm lên 1: - In biến đếm ra màn hình + Xếp loại học lực: - (1 đ) Sử dụng con trỏ p duyệt từ học sinh đầu tiên đến học sinh cuối cùng trong danh sách. Duyệt đến học sinh nào thì xếp loại học lực cho học sinh đó theo tiêu chí đã cho của đề bài sử dụngc câu lệnh if hoặc câu lệnh case .....of + Sắp xếp danh sách theo trường lớp tăng dần (1 đ) Có thể sử dụng một trong các thuật toán sắp xếp để sắp xếp dữ liệu trên danh sách liên kết, ở đây ta sử dụng giải thuật sắp xếp chọn trực tiếp (selection sort) và sử dụng cách tiếp cận:giữ nguyên mối liên kết của các nút trong danh sách và hoán vị nội dung của các nút: Giải thuật: Procedure ListSelection_Sort(var L: List) Var p, q, min: List; Begin p:=L; While (p<>nil) do Begin q:=p^.next; min:=p; While (q<>nil) do Begin If (q^.infor nil) do Begin Write(M^. hoten); Write(M^. Lop); Write(M^. sbd); P:=M; M := M^.next; If (M^.lop<>p^.lop) then writeln(‘Các sinh vien lop M^.lop la:’); End; Câu 3 - Bài toán tính biểu thức tiền tố, lưu vết đường đi trên đồ thị, khử đệ quy, ...... (0.5 đ) - Phân tích bài toán : (0.5 đ)
- Xem thêm -

Tài liệu liên quan