Đề Thi Có Đap Án.docx

20 2 0
Đề Thi Có Đap Án.docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đề thi Cấu trúc dữ liệu và giải thuật (Có đáp án) Đại Học Công Nghệ Thông Tin Đại Học Thái Nguyên Đề 1 Câu 1(2 điểm) Thế nào là giải thuật; cấu trúc dữ liệu, mối quan hệ giữa chúng? Hãy nêu một vài cấ[.]

Đề thi Cấu trúc liệu giải thuật (Có đáp án) Đại Học Công Nghệ Thông Tin Đại Học Thái Nguyên Đề Câu 1(2 điểm) Thế giải thuật; cấu trúc liệu, mối quan hệ chúng? Hãy nêu vài cấu trúc liệu tiền định ngơn ngữ lập trình mà anh (chị) biết? Câu 2(5 điểm) Giả sử cần quản lý lớp học bao gồm sinh viên Mỗi sinh viên gồm thông tin sau: Họ Tên, Lớp, Số báo danh, Điểm trung bình Anh (chị) hãy: 1) Viết dạng cài đặt danh sách cấu trúc danh sách liên kết đơn, 2) Với cấu trúc danh sách cài đặt, viết chương trình thực yêu cầu sau: a) Nhập vào danh sách gồm n sinh viên b) Loại bỏ khỏi danh sách sinh viên có điểm trung bình < c) Sắp xếp danh sách theo trường lớp tăng dần d) In hình danh sách sinh viên theo lớp (n số nguyên dương tự nhập từ bàn phím) Câu 3(1 điểm) Anh (Chị) nêu ưu nhược điểm cách cài đặt danh sách danh sách liên kết đơn? Câu + Giải thuật dãy câu lệnh chặt chẽ rõ ràng, xác định dãy thao tác số đối tượng nào(dữ liệu) cho sau số hữu hạn bước thực ta đạt kết mong muốn (0.5 đ) + Cách thức tổ chức biểu diễn liệu mà theo liệu lưu trữ xử lý MTĐT, gọi cấu trúc liệu (0.5 đ) + Mối quan hệ cấu trúc liệu giải thuật: Giải thuật tác động liệu lưu trữ cấu trúc kết mong muốn Trong lập trình, chúng quan hệ với theo ràng buộc sau: Giải thuật + cấu trúc liệu = chương trình (0.5 đ) + Một vài cấu trúc liệu ngôn ngữ lập trình: Mảng, ghi, xâu ký tự, tệp tin … (0.5 đ) Câu *) Dạng cài đặt danh sách (1 đ) Type Sinhvien = record ` end; List = ^Sinhvien; Var L: List; *) Viết giải thuật Hoten: String; Lớp : String; SoBD: String; ĐTB: real; Next: ^ Sinhvien; 1) Nhập danh sách gồm n sinh viên (1 đ) + Nhập số lượng sinh viên có n: readln(n); + Sử dụng vòng lăp i chạy từ -> n, lần lặp nhập sinh viên gắn vào danh sách: for i:=1 to n begin - new(M); {yêu cầu MT cấp phát ô nhớ chứa liệu sinh viên cần nhập } - Nhập thông tin sinh viên, lưu vào ô nhớ trỏ M - Gắn kết ô nhớ trỏ M vào danh sách end; 2) Loại bỏ SV có điểm trung bình top hay khơng? Nếu lớn thêm x vào đỉnh ngăn xếp, khơng: Lấy (top-k+1) phần tử kể từ đầu ngăn xếp ngăn xếp phụ, thêm phần tử phần tử x vào ngăn xếp, đổ (top – k+1) phần tử từ ngăn xếp phụ vào ngăn xếp ban đầu đảm bảo không thay đổi trật tự phần tử ngăn xếp ban đầu sau loại bỏ phần tử vị trí k.(thủ tục tương ứng tự viết) Câu (1 đ) - Cấu trúc ngăn xếp thường áp dụng cho tốn có trình tự truy xuất ngược với trình tự lưu trữ Ví dụ: + Bài tốn chuyển đổi số, tìm ước số chung hai số ngun, tốn tính giá trị biểu thức, + Thường áp dụng số toán tìm đường lý thuyết đồ thị (lưu vết đường đi) + làm môi trường lưu trữ biến toàn cục cục thủ tục chương trình dịch ngơn ngữ lập trình (1 đ) - Phân tích cách giải tốn để thể rõ điều nêu Đề Câu 1(2 điểm) Có người nói: “Phép đệ quy phản ánh chiến thuật “chia để trị” cách giải toán ” Điều có khơng? anh (chị) giải thích cho ví dụ minh họa cho điều đó? Câu 2(3 điểm) Giả sử cần quản lý chứa số nguyên, đỉnh đánh số theo thứ tự Hãy viết dạng cài đặt cha đỉnh sử dụng mảng Với cách cài đặt này, viết giải thuật tìm cả, tìm cha đỉnh k cho trước (k số nguyên nhập từ bàn phím) Câu 3(3 điểm) Cho thư mục T kích cỡ thư mục máy tính sau: KB \users \BT\ KB Tin\ KB BT 1KB Toan\ 10 kB KB Bt Bt 9KB BT1 10 kB BT2 Anh(chị) hãy: 1) Viết dạng cài đặt trưởng em liền kề đỉnh, sử dụng trỏ 2) Để tính tổng kích thước tồn thư mục ta duyệt theo thứ tự nào? 3) Mơ tả cách tính tổng kích thước thư mục? Câu + “Phép đệ quy phản ánh chiến thuật “chia để trị” cách giải tốn ” điều đúng, thể chỗ: Để giải toán với số lượng liệu đầu vào lớn, ta giải toán với số lượng liệu đầu vào nhỏ hơn, nhỏ nữa, gọi đệ quy gọi đến trường hợp toán xảy suy biến (trường hợp tốn xử lý) Đây tư tưởng chiến thuật chia để trị + Ví dụ: (1 đ) Chạy chậm giải thuật đệ quy, ví dụ tính n ! : Để tính n! Ta tính (n-1)!, (n-n+1) = 1! = 1.(vẽ hình minh họa) (1 đ) Câu + Dạng cài đặt cha đỉnh: (1 đ) Const n = ; Type Node = Record Info: Integer; parent: n; End; Tree = Array [1 n ] of Node; Var T: Tree; + Tìm cha đỉnh thứ k: (1 đ) parent (T, k) := T[k].parent; + Tìm đỉnh thứ k T (1 đ) Duyệt đỉnh T, xuất phát từ đỉnh gốc(i:=1), kiểm tra xem cha đỉnh i có = k khơng, = k, kết luận i cả, dừng giải thuật, cha i k duyệt đỉnh T cách cho i:= i+1 Lặp lặp lại phép duyệt đỉnh T tìm thấy dừng (found = true), duyệt hết đỉnh T (i>n với n số đỉnh cây) dừng kết luận khơng tim thấy Câu + Dạng cài đặt trưởng em liền kề đỉnh: Type Tree Nut Var T: Tree; = = (1 đ) ^Nut; record End; Tenthumuc: string; Kichco:integer; EldestChild, Nextsibling:Tree; + Duyệt theo thứ tự sau để xác định tổng kích thước thư mục (1 đ) + Mơ tả cách tính tổng kích thước thư mục T trên: (1 đ) - Biến: tong:= 0; {tong lưu tổng kích thước tồn thư mục} - Procedure postOder(T : tree, var tong:integer); Var C: tree; Begin if (T=nil) then exit; else begin End; end; C:=t^.eldestChild; postOrder(C); C:=C^.nextsibling; While (Cnil) Begin postOrder(C); C:= C^.nextsibling; End; Tong:=tong+T^.kichco; Đề Câu 1(2 điểm) Trình bày đặc điểm giải thuật đệ quy Hàm đệ quy (viết ngôn ngữ pascal) cho kết gì? Giải thích sao? Function Tinh(n,x: byte): Longint; Begin If n = then Tinh := x Else Tinh := n* Tinh(n-1,x); End; Câu 2(4 điểm) Giả sử đơn vị cần quản lý cán bộ, cán cần quản lý thuộc tính sau: Họ tên, năm sinh, giới tính, địa chỉ, trình độ, chức danh Anh(chị) lựa chọn cấu trúc liệu để quản lý thông tin cán đơn vị đó, cho: - Dữ liệu lưu nhớ - Thuận lợi cho phép tốn: thêm, xóa cán - Tiết kiệm không gian nhớ Với cấu trúc liệu mà anh(chị) lựa chọn Anh(chị) hãy: 1) Viết dạng cài đặt cấu trúc liệu 2) Viết giải thuật đếm số lượng cán đơn vị 3) Hiển thị thông tin cán đơn vị 4) Loại bỏ người đến tuổi hưu (biết nam: 60 tuối; nữ: 55 tuổi hưu) Câu 3(2 điểm) Nêu khái niệm danh sách? cách cài đặt danh sách mảng, danh sách liên kết đơn? ưu nhược điểm dạng cài đặt? Câu + Ba đặc điểm giải thuật đệ quy: (1 đ) - Trong giải thuật đệ quy có lời gọi đến - Sau lời gọi đệ quy, kích thước tốn thu nhỏ trước - Có trường hợp suy biến: tốn giải theo cách khác hẳn giải thuật kết thúc + Kết hàm đệ quy là: x*n!, vì: (1 đ) n = cho kết là: 1*x n = cho kết là: 1*2*x n = cho kết là: 1*2*3*x n = n cho kết là: 1*2*3* .*n*x = n! * x Câu 1) Cấu trúc liệu lựa chọn danh sách liên kết đơn (1 đ) Dạng cài đặt Type Canbo = record Hoten: String; Năm sinh : integer; Giớitinh: boolean; Diachi, trinhdo, chucdang: string; ` Next: ^ Canbo; end; List = ^Canbo; Var L: List; 2) Đếm số lượng cán trong danh sách (1 đ) - Sử dụng biến đếm lưu số lượng cán đơn vị, ban đầu dem:= , - Sử dụng trỏ phụ M duyệt từ đầu đến cuối danh sách, duyệt đến cán tăng biến đếm lên 1: - In biến đếm hình 3) Hiển thị cán đơn vị: (1 đ) Sử dụng trỏ phụ M duyệt từ đầu đến cuối danh sách, duyệt đến cán hiển thị thơng tin cán lên hình: 4) Loại bỏ cán đến tuổi hưu đơn vị: (1 đ) Cách làm: b1) Tìm cán danh sách đến tuổi hưu, giả sử vị trí trỏ p b2) Loại bỏ cán vị trí p b3) Lặp lặp lại b1); b2) hết vị trí tìm thấy Chú ý: - để tìm cán thỏa mãn điều kiện ta duyệt từ đầu danh sách p:=L đến tìm thấy dừng - để loại bỏ học sinh vị trí p: a) Di chuyển trỏ phụ M đến vị trí trước p:  M:=L;  While M^.next p M:=M^.next; b) Bứt liên kết, gắn liên kết, giải phóng p:  M^.next:=p^.next;  Dispose(p); Câu + Danh sách cấu trúc dùng để lưu trữ tập hợp hữu hạn biến động phần tử thuộc lớp đối tượng (0.5 đ) + Có thể cài đặt danh sách mảng trỏ, tương ứng ta có danh sách danh sách móc nối (danh sách liên kết) Các dạng cài đặt tương ứng: Cài đặt mảng: ( 0.5 đ) Const n=maxlist; Type list = record Var L: list; Cài đặt trỏ: end; Eles: array[1 n]of integer; Count: n; (0.5 đ) type list=^nut; nut = record infor: item; next:list; end; var l,f:pqueue; + Ví dụ để quản lý sinh viên, cán ta có danh sách sinh viên, danh sách cán bộ… Ưu nhược điểm cài đặt danh sách: (0.5 đ) a) Danh sách cài mảng Ưu điểm i truy cấp đến phần tử trực tiếp nhanh đồng phần tử ii Các thao tác thực tương đối dễ dàng Nhược điểm iii Có tượng dư thừa nhớ: Hiện tượng giữ chỗ không dùng tới iv Bị hạn chế không gian nhớ v Là cấu trúc liệu tĩnh, bị giới hạn không gian nhớ ghi liệu ghi stack vi có tượng co giãn, dịch chuyển phần tử thực thao tác bổ sung phần tử, loại bỏ phần tử, số lượng phép tính giải thuật tăng= > độ phức tạp tính tốn cũnh tăng theo b) Danh sách cài đặt trỏ Ưu điểm: - Không gây tượng lãng phí nhớ (Hiện tượng giữ chỗ không dùng đến danh sách cài đặt mảng) - Cấu trúc liệu danh sách cài đặt trỏ gọi cấu trúc dũ liệu động, không gian nhớ cấp phát heap, khơng bị giới hạn kích thước 64kb cấu trúc liệu tĩnh - Các phần tử danh sách nằm vị trí dải dác, tận dụng không gian trống này, mà không cần vùng nhớ cài đặt mảng Nhược điểm: - Tốc độ truy cập đến phần tử danh sách chậm, không đồng phần tử (truy cập chiều) - Từ phần tử trước không truy cập ngược lại phần tử đứng trước - phần tử danh sách tốn thêm không gian 4byte để lưu địa phàn tử đứng sau danh sách Đề Câu 1(2 điểm) Trình bày đặc điểm giải thuật đệ quy Giả sử a b số nguyên dương, Q hàm số a b, định nghĩa sau: a=b Hãy tính Q(2,3) Q(14,3) Q(a,b) = { Câu 2(3 điểm) Giả sử cần quản lý danh sách số nguyên Hãy viết dạng cài đặt danh sách mảng, với cấu trúc danh sách cài đặt, viết chương trình thực u cầu sau: 1) Tính trung bình cộng số lưu danh sách 2) Loại bỏ khỏi danh sách số tìm thấy danh sách 3) Hiển thị danh sách lên hình Câu 3(3 điểm) Hãy vẽ nhị phân biểu diễn biểu thức toán học sau: 3*4+(12+b)/6 Từ biểu thức vừa dựng, anh (chị) hãy: 1) Viết dạng cài đặt trỏ, 2) Viết thủ tục duyệt theo thứ tự trước, sau 3) Viết biểu thức toán học dạng tiền tố, hậu tố? nhận xét với kết duyệt theo thứ tự trước, sau? Câu + Ba đặc điểm giải thuật đệ quy: (1 đ) - Trong giải thuật đệ quy có lời gọi đến - Sau lời gọi đệ quy, kích thước toán thu nhỏ trước - Bao có trường hợp suy biến (trường hợp đặc biệt để đãm bảo tính dừng giải thuật): tốn giải theo cách khác hẳn giải thuật kết thúc + Tính : Q(2,3) =0; Q(14, 5) = (1 đ) Câu + Dạng cài đặt danh sách mảng: (0.5 đ) Const n=maxlist; Type list = record Var L: list; end; Ele: array[1 n]of integer; Count: n; + Các thủ tục tương ứng với u cầu: 1) Tính trung bình cộng số lưu danh sách (0.5 đ) function Trungbinh(l:list): integer; var i, tam: integer; Begin for i:=1 to n tam:= tam+L.Ele[i]; Trungbinh:=tam; End; 2) Loại bỏ số tìm thấy danh sách (1 đ) procedure Loaibo(var L: list); var k,i:integer; found: boolean; Begin found:= false; k:=1; while (not found)and(k Biểu thức trùng với kết duyệt theo thứ tự trước + Biểu thức hậu tố: (0.5 đ) 34*+12b+6/ => Biểu thức trùng với kết duyệt theo thứ tự sau Đề Câu 1(2điểm) Nêu khái niệm hàng đợi? cách cài đặt hàng đợi mảng, trỏ? ưu nhược điểm dạng cài đặt? Câu 2(5 điểm) Giả sử ta cần quản lý danh sách học sinh, học sinh gồm 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 danh sách liên kết kép 2) Với cách cài đặt này, viết chương trình tương ứng với yêu cầu sau: a) Tạo danh sách có n học sinh, (n số nguyên dương nhập từ bàn phím) b) Đếm xem danh sách có sinh viên học lớp “CĐ2C” c) Hãy xếp loại học lực cho sinh viên danh sách theo tiêu chí sau: + Nếu: Điểm tổng kết< 5: Xếp loại yếu + Nếu : ≤ Điểm tổng kết ≤6: Xếp loại trung bình + Nếu : 6< Điểm tổng kết người ta cần đến

Ngày đăng: 06/03/2023, 15:28

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan