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: 22
Câu 1 (2 điểm)
Định nghĩa từ điển, Tư tưởng của bảng băm sử dụng trong việc cài đặt từ điển.
Viết dạng cài đặt từ điển bởi bảng băm mở. Với dạng cài đặt này anh(chị) hãy cài
đặt phép toán tìm xem trong từ điển T có chứa từ x hay không? (x là một từ được
nhập từ bàn phím)
Câu 2( 4 điểm)
Cho một danh sách liên kết đơn (DSLK) có nút đầu danh sách được trỏ bởi con
trỏ L, các phần tử trong danh sách có kiểu dữ liệu Item nào đó.
Viết các hàm trên DSLK đơn này:
a. insert_first (thêm một phần tử vào đầu danh sách),
b. insert_last (thêm một phần tử vào cuối danh sách),
c. remove_first(loại bỏ phần tử đầu tiên trong danh sách),
d. remove_last(loại bỏ phần tử cuối cùng trong danh sách)
2) Dùng các hàm ở ý 1) để tạo ra một hàng đợi và một ngăn xếp chứa n phần
tử; (n là số nguyên dương nhập từ bàn phím)
1)
3) Lấy các phần tử trong ngăn xếp và hàng đợi ra hiển thị lên màn hình.
Câu 3 ( 2 điểm)
Dựng đồ thị có hướng G có giá trị ma trận lân cận kề như sau:
1
2
3
4
5
6
1
2
3
4
5
6
0
1
0
1
1
1
1
1
1
0
0
1
0
1
0
1
0
1
0
0
1
0
1
1
1
0
1
1
0
1
1
1
1
1
1
1
Nêu kết quả phép duyệt đồ thị G theo chiều sâu, và chiều rộng xuất phát từ V1.
……………………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ộ
Mã đề 22
Câu 1
Tương tự câu 1 đề 15
Câu 2
Các hàm:
1) procedure insert_first(x:item, var L: list); {thêm phần tử x vào đầu danh sách L}
(0.5 đ)
Var m:list;
Begin
new(M);
m^.infor:= x;
M^.next:=L;
l:=M;
End;
2)procedure insert_last(x: Item, var L: list); (thêm một phần tử x vào cuối danh sách L)
(0.5 đ)
var M, p:list;
Begin
p:=L; while (p^.next <>nil) do p:=p^.next;
new(M);
M^.infor:= x;
p^.next := M;
m^.next:=nil;
End;
3) Procedure remove_first(var m: list; var L:list )(loại bỏ phần tử đầu tiên trong danh
sách L, M trỏ tới phần tử sau khi bị loại bỏ khỏi danh sách); (0.5 đ)
Begin
if (L<>nil) then M:=L; L:=L^.next;
End;
4) Procedure remove_last(var M:list; var L:list)(loại bỏ phần tử cuối cùng trong danh
sách L; M trỏ tới nút sau khi loại bỏ khỏi danh sách) (0.5 đ)
var p,q:list;
Begin
if L<>nil Then
Begin
p:=L; q:=p^.next;
while (q^.next<>nil) do
begin
p:q; q:=q^.next;
end;
M:=q; p^.next:=nil;
End;
End;
2) tạo một hàng đợi và một ngăn xếp chứa n phần tử
(1 đ)
a)Tạo ngăn xếp
procedure taoNgănxep(var Top:list);
var n, i, x:integer;
Begin
writeln(‘Nhap n=’); readln(n);
for i:= 1 to n do
write(‘Nhạp gia trị =’); readln(x); insert_first(x, Top);
End;
b) Tạo hàng đợi
procedure taohangdoi(var L,F:list);
var n, i, x:integer;
Begin
L:=nil; F:=nil;
writeln(‘Nhap n=’); readln(n);
for i:= 1 to n do
write(‘Nhạp gia trị =’); readln(x); insert_last(x, F);
End;
Lấy các phần tử trong hàng đợi và trong ngăn xếp hiển thị lên màn hình(1 đ)
procedure hienthi_nganxep(top:list);
var m:list;
begin
while top<>nil do
begin
remove_firsts(M, Top);
write(M^.infor);
end;
Tương tự với hàng đợi
Câu 3
1. Dựng đồ thị (1đ)
2
3
1
4
6
5
2) Kết quả duyệt (1đ)
Kết quả duiyệt theo chiều rộng: 1 2 4 5 6 3
Kết quả duyệt theo chiều sâu: 12 3 4 5 6
- Xem thêm -