Tải bản đầy đủ (.pdf) (3 trang)

Đề thi tuyển sinh Cao học và nghiên cứu sinh môn Ngôn ngữ lập trình 2005

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (275.93 KB, 3 trang )

1/3
BỘ GIÁO DỤC & ĐÀO TẠO Họ và tên thí sinh:..................................................
ĐẠI HỌC HUẾ Số báo danh:..................................................


KỲ THI TUYỂN SINH SAU ĐẠI HỌC NĂM 2005
Môn thi: Ngôn ngữ lập trình
(Dành cho cao học)
Thời gian làm: 180 phút


Câu 1. Cho danh sách liên kết đơn mà nút đầu trỏ bởi biến con trỏ First (gọi tắt là
danh sách First) có khai báo như trong chương trình chính:
TYPE TroNut=^Nut;
Nut=Record
Info:Integer;
Next:TroNut;
End;
Var First:TroNut;

Giả sử, giá trị trường Info của các nút thuộc danh sách First lần lượt là: 8, 4, 10,
9, 5. Hãy cho biết kết quả in ra màn hình khi máy thực hiện lời gọi chương trinh
con: Sort(First) biết rằng thủ tục Sort có nội dung như sau:

Procedure Sort(F:TroNut);
Var tam:integer;
Procedure List(F:TroNut);
Begin
if F<>nil then begin write(F^.info:5);List(F^.Next); end;
End;
BEGIN


If (F<>nil)and(F^.Next<>nil) then
Begin
Sort(F^.Next);
If F^.info > F^.Next^.info then
Begin
Tam:=F^.info; F^.info:=F^.Next^.info;
F^.next^.info:=tam;
List(First);
writeln;
Sort(F^.Next);
End;
End;
END;

Câu 2. Thông tin về các môn học được đào tạo tại một khoa của một trường Đại
học có thể được lưu trữ trong một danh sách liên kết đơn vời nút đầu được trỏ bởi
FirstS có khai báo như sau ở chương trình chính:

Type st30=String[30];
TroMH=^NutMH;
Trình bày: Trần Hoài Nhân

2/3
NutMH=record
MaMH:integer; {Mã môn học: trường khóa}
TenMH:St30; {Tên môn học}
SoDVHT:byte; {Số đơn vị học trình}
Ne
end;
xt:TroMH; {Địa chỉ nút tiếp theo trong danh sách}

Var FirstS:TroMH;

a. Viết hàm
Function Addr(First: TroMH; BMaMH:integer):TroMH;
trả về địa chỉ của nút thuộc danh sách FirstS có mã môn học là BMaMH,
hoặc trả về giá trị NIL nếu không có nút nào có mã môn học là BMaMH.
b. Để quản lý các môn học được phân công giảng dạy của mỗi giáo viên, người
ta lại sử dụng một danh sách liên kết đơn (gọi là danh sách giáo viên) với
nút đầu được trỏ bởi con trỏ FirstT. Mỗi nút của danh sách giáo viên là một
bản ghi gồm 4 trường: trường MaGV để lưu mã giáo viên (là trường khóa),
trường HoTenGV để lưu họ tên giáo viên, trường Down lưu địa chỉ của nút
tiếp theo, và trường DSM lưu địa chỉ nút đầu của một danh sách khác chứa
mã của môn học do giáo viên đó đảm nhiệm (gọi là danh sách môn học).
Mỗi nút của danh sách môn học là một bản ghi gồm 2 trường: MaM để lưu
mã môn học đã được đăng ký trong danh sách FirstS và trường Tiep lưu địa
chỉ của nút tiếp theo. Lưu ý rằng:
• Danh sách giáo viên được sắp theo thứ tự tăng dần của MaGV.
• Cho biết khai báo bổ sung của cấu trúc dữ liệu nói trên như sau:
type St25=String[25];
st8=string[8];
TroM=^NutM;
NutM=record
MaM:integer;
Tiep: TroM;
end;

TroGV=^NutGV;
NutGV=record
MaGV:st8;
HoTenGV:st25;

down: TroGV;
DSM: TroM;
end;
var FirstT:TroGV;

Viết hai thủ tục:
+
Procedure ListOfSubjects(FirstT:TroGV; BMaGV:st8);
để liệt kê các môn học do giáo viên có mã giáo viên là BMaGV đảm nhiệm
theo mẫu sau:
STT Tên môn học Số đơn vị học trình
… … …

Trình bày: Trần Hoài Nhân

3/3
+
Procedure ListOfTeachers(FirstT:TroGV; BMaM:integer);

để liệt kê các giáo viên đảm nhiệm môn học có mã môn học là BMaM theo
mẫu sau:
STT Họ và tên giáo viên
… …

Câu 3. Cho trước cây nhị phân Top (nút gốc trỏ bởi Top) có khai báo như sau:
type TroNutTrenCay = ^NutTrenCay;
NutTrenCay = record
Value:integer;
Left,Right:TroNutTrenCay;
end;

var Top:TroNutTrenCay;

a. Viết hàm
Function Muc(Top,p:TroNutTrenCay):word;
trả về giá trị là mức (level) của một nút thuộc cây nhị phân Top được trỏ bởi
con trỏ P.
b. Để biểu diễn một hàng đợi, người ta có thể sử dụng một danh sách liên kết
đơn vời nút đầu (lối trước) và nút cuối (lối sau) lần lượt trỏ bởi First và Last.
Ngoài ra mỗi nút trên danh sách này còn có thể lưu địa chỉ của một nút thuộc
cây nhị phân Top. Cụ thể ta có khai báo bổ sung như sau:
type TroNutTrenDS=^NutTrenDS;
NutTrenDS = record
Info: TroNutTrenCay;
{lưu địa chỉ của một nút thuộc cây nhị phân Top}
Next: TroNutNutTrenDS;
{lưu địa chỉ nút tiếp trong danh sách}
end;
var First, Last: TroNutTrenDS;

Viết hai thủ tục:
+
Procedure InsertQueue(var First,Last: TroNutTrenDS; X:
TroNutTrenCay);
để bổ sung một nút mà trường Info có giá trị bằng X tại vị trí lối sau Last.
+
Procedure DeleteQueue(var First,Last: TroNutTrenDS; var X:
TroNutTrenCay);

để loại bỏ một nút tại vị trí lối trướng First và gán giá trị trường Info của nút
này cho tham biến X.

c. Viết thủ tục
Procedure LietKe(Top: TroNutTrenCay);
nhằm liệt kê giá trị trường Value của mọi nút trên cây nhị phân Top, với yêu
cầu:
• Thứ tự các nút được liệt kê là theo thứ tự tăng dần của mức các nút trên
cây.
• Các nút có cùng mức được liệt kê theo thức tự từ trái sang phải.

Ghi chú: Cán bộ coi thi không được giải thích gì thêm.
Trình bày: Trần Hoài Nhân

×