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 -