Đề thi cuối kỳ năm 2017 Cấu trúc dữ liệu và giải thuật | Trường Đại học CNTT Thành Phố Hồ Chí Minh

Đề thi cuối kỳ năm 2017 Cấu trúc dữ liệu và giải thuật | Trường Đại học CNTT Thành Phố Hồ Chí Minh được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

Câu 1 : (2 m) đi
Cho c u trúc d li u danh sách liên k t n và hàm RPrint nh d i ây : ế đơ ư ướ đ
Hàm void RPrint(List ls)
Anh / ch hãy vi t hàm RPrint in lên màn hình các ph n t trong danh sách ls theo ế để
th t t ph n t cu i n ph n t u ( đế đầ không dùng m ng ph ho c danh sách
ph).
Thang m : đi
- SV th c hi n theo úng yêu c a câu h đ u c i (không dùng m ng ph ho c danh sách
ph).
- SV có th s d ng hàm qui ho c vòng l đệ để đ p thc hi n úng yêu c u s có tr n
đ i m câu h i.
Đáp án tham kho :
void RPrint(List ls) {
if (ls.pHead == NULL) return;
Node *p = ls.pHead;
if (ls.pHead != ls.pTail) u ki// Có th n ki không c m tra đi n này c ng c ũ đượ
{ ls.pHead = p->pNext;
RPrint(ls);
}
cout << p->info << " ";
}
Câu 2 : (2 m) đi
Cho chu i các thao tác nh sau: ư
RTU*I**MUN***EB***1*ON
TRƯỜNG ĐẠI H C CÔNG NGH THÔNG TIN
KHOA KHOA H C MÁY TÍNH
ĐÁP ÁN và THANG ĐIM THAM KHO
ĐỀ THI CU I K
HC K 2 – N M H C 2017-2018 Ă
Môn thi: C u trúc d li u và gi i thu t
Mã l p: Các l p IT003 - H i trà đạ
struct Node
{ int info;
Node *Next;
};
struct List
{ Node *Head ;
Node *Tail;
};
MSSV:............................ Trang / 1 4
Biết r ng: v i m i ch cái t ng tr ng cho thao tác thêm ch cái t ng ng vào ượ ư ươ Stack
(ng p)ăn xế ; v i m i d u * t ng tr ng cho thao tác l y n i dung m t ph n t trong ượ ư
stack in ra màn hình. Anh / ch hãy cho bi t sau khi hoàn t t chu i thao tác trên, ế
nhng ch cái nào còn trong stack và nh ng ch cái nào c in ra màn hình. đượ
Thang m : đi
SV có th th c hi n theo m t trong 4 ph ng án s có tr n m: ươ đi
-
Thao tác l y n i dung ph n t theo hàm pop, chu i thao tác bao g m k t 1. ý
-
Thao tác l y n i dung ph n t theo hàm pop, chu i thao tác không bao g m k t 1. ý
-
Thao tác l y n i dung ph n t theo hàm top, chu i thao tác bao g m k t 1. ý
-
Thao tác l y n i dung ph n t theo hàm top, chu i thao tác không bao g m k t 1. ý
Câu 3 : (4 m) đi
Cho dãy s nh sau : {93, 11, 97, 65, 27, 70, 13, 83, 54, 101} ư
Anh / ch hãy th c hi n :
a. Xây d ng cây nh phân tìm ki m t dãy s trên (1.5 ế l in l t t trái sang phượ
đ i m)
Đáp án :
-
SV v chính xác cây nh phân tìm ki m theo úng th t c a dãy s trong câu h i ế đ
vi s nút 93 là nút g c.
-
SV th v cây nh phân tìm ki m k t qu cu i cùng ho c v t ng b c u c ế ế ướ đề đượ
tính úng đ
Thang m : đi
-
SV v úng cây nh phân tìm ki m theo yêu c u t trái sang ph i c a dãy s v i nút đ ế
g ic là 93 s c tr n s đượ đ m.
-
SV v c 1/2 s nút (5 nút) úng ho c 1/3 s nút (3 nút) úng s thang m đượ đ đ đi
t i iương ng 1/2 ho c 1/3 đ m c a câu h i, v i đ u ki n nút g c c a cây ph i
nút 93 theo yêu c u.
-
SV v cây nh phân tìm ki m úng, nh ng nút g c sai (không ph i 93) ế đ ư s không có
đ i m.
b. Xóa l n l t theo th t các nút {54, 11, 93} (1.5 m) ượ đi
Lưu : Khi xóa 1 nút, cân b ng cây khi x y ra m t cân b ng, cho bi t nút b ý ế
mt cân b ng và lo i m t cân b ng
Đáp án :
S ch p nh n các l i gi i áp l p lu n h p l (nh cân b ng cây câu 3.a đ ý ư
sau ó xoá 3 s /node ho c áp d ng qui t c cân b ng cây nh phân tìm ki m cân đ ế
bng khi xoá 3 s /node ho c duy t cây l y ra các s /node sau ó xây cây nh đ
phân tìm ki m cân b ng) cu i cùng xây d ng c cây cân b ng AVL v i ế đượ
chui s ã cho ( ã lo i b 3 s /node). đ đ
MSSV:............................ Trang / 2 4
Thang m : đi
- SV v c cây cân b ng cu i cùng úng l p lu n h p l s tr n đượ đ ý
đ đ i m (1.5 i m)
- SV v c cây cân b ng cu i cùng úng, nh ng không trình bày l do vì sao đượ đ ư ý
có cây k t qu : tr 0.75 m. ế đi
c. Viết hàm m s nút trên cây ch có duy nh t 1 nút con ph i (1 m) đế đi
Thang m : đi
-
SV có th s d ng hàm qui ho c vòng l đệ để đ p thc hi n úng yêu c u s có tr n
đ i m câu h i.
Đáp án tham kho :
int count(Tree* pTree)
{
if (pTree==NULL) return 0;
if ((pTree->left==NULL && pTree->right!=NULL)
return 1+count(pTree->left)+count(pTree->right);
else return count(pTree->left)+count(pTree->right);
}
Câu 4 : (2 m) đi
Cho t p khóa = {12, 44, 13, 88, 23, 94, 11, 39, 20, 16, 5} và hàm b m : K ă ,
H ) (key) = (2*key+5 %11 ( : khóa c n bkey ăm).,
Anh / ch hãy th c hi n :
a. V ướ ă ướ hình tng b c vi c lưu tr tng khóa trong vào bK ng b m có kích th c,
M=11, dùng hàm b m và ph ng pháp x l xung t. ă H ươ ni k t tr c tiế ếp để ý độ
(1 m) đi
Đáp án :
-
SV ph i v hình t ng b c úng khi thêm t ng s vào b ng b m ướ đ ă
Thang m : đi
-
SV v b ng b m g m 11 ph n t úng : 0.125 m ă đ đi
-
SV b trí s u tiên vào b ng b m úng : 0.125 m đầ ă đ đi
-
SV b trí úng vào b ng b m nhóm ng có s d 4 (s 16, 5) : 0.125 đ ă đụ độ ư
-
SV b trí úng vào b ng b m nhóm ng có s d 6 (s 39,94) : 0.125 đ ă đụ độ ư
-
SV b trí úng vào b ng b m nhóm ng có s d 5 (s 44, 88, 94) : 0.25 đ ă đụ độ ư
-
SV b trí úng vào b ng b m nhóm ng có s d 7 (23) : 0.125 đ ă đụ độ ư
-
SV b trí úng vào b ng b m các s không ng (20, 13) : 0.125 đ ă đụ độ
MSSV:............................ Trang / 3 4
b. Đị ĩ ă đ nh ngh a c u trúc d li u cho b ng b m câu a (1 i m)
Thang m : đi
- SV nh ngh a CTDL úng : 0.5 m đị ĩ đ đi
#define M 11
typedef struct tagNODE
{ int key;
tagNODE *next
}NODE, *NODEPTR;
- SV khai báo b ng b m úng : 0.5 m ă đ đi
/* khai bao mang bucket chua M con tro dau cua Mbucket */
NODEPTR bucket[M];
HT
MSSV:............................ Trang / 4 4
| 1/4

Preview text:

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ĐÁP ÁN và THANG ĐIỂM THAM KHẢO ĐỀ THI CUỐI KỲ
KHOA KHOA HỌC MÁY TÍNH
HỌC KỲ 2 – NĂM HỌC 2017-2018
Môn thi: Cấu trúc dữ liệu và giải thuật
Mã lớp: Các lớp IT003 - Hệ đại trà Câu 1 : (2 điểm)
Cho cấu trúc dữ liệu danh sách liên kết đơn và hàm RPrint như dưới ây : đ struct Node struct List { Node *Head ; { int info; Node *Tail; Node *Next; }; }; Hàm void RPrint(List ls)
Anh / chị hãy viết hàm RPrint để in lên màn hình các phần tử trong danh sách ls theo
thứ tự từ phần tử cu i
ố đến phần tử đầu (không dùng m ng
phụ hoặc danh sách phụ). Thang điểm :
- SV th
c hin theo đúng yêu cu ca câu hi (không dùng m ng ph
ụ ho c danh sách phụ).
- SV có thể sử d ng hàm đệ qui ho c vòng l ặ để p
thực hiện đúng yêu cầu sẽ có trọn điểm câu hỏi.
Đáp án tham khảo : void RPrint(List ls) {
if (ls.pHead == NULL) return; Node *p = ls.pHead;
if (ls.pHead != ls.pTail) // Có th không cn kim tra điu kin này cũng được
{ ls.pHead = p->pNext; RPrint(ls); }
cout << p->info << " "; } Câu 2 : (2 điểm)
Cho chu i các thao tác nh ỗ ư sau: RTU*I**MUN***EB***1*ON
MSSV:............................ Trang 1 / 4 Biết rằng: với m i ch ỗ
ữ cái tượng trưng cho thao tác thêm chữ cái tương ứng vào Stack
(ngăn xếp); với m i
ỗ dấu * tượng trưng cho thao tác lấy n i ộ dung m t ộ phần tử trong
stack và in ra màn hình. Anh / chị hãy cho biết sau khi hoàn tất chu i ỗ thao tác trên,
những chữ cái nào còn trong stack và những chữ cái nào được in ra màn hình. Thang điểm :
SV có thể thực hiện theo một trong 4 phương án sẽ có tr n
ọ điểm: - Thao tác l y n i dung ph
ần tử theo hàm pop, chuỗi thao tác bao gồm ký tự 1. - Thao tác l y n i dung ph
ần tử theo hàm pop, chuỗi thao tác không bao g m k ý tự 1. - Thao tác l y n i dung ph
ần tử theo hàm top, chu i thao tác bao g m k ý tự 1. - Thao tác l y n i dung ph
ần tử theo hàm top, chu i thao tác không bao g m k ý tự 1. Câu 3 : (4 điểm) Cho dãy s nh ố
ư sau : {93, 11, 97, 65, 27, 70, 13, 83, 54, 101}
Anh / chị hãy thực hiện :
a. Xây dựng cây nhị phân tìm kiếm từ dãy s trên ố
lần lượt từ trái sang ph i (1.5 điểm) Đáp án :
- SV vẽ chính xác cây nhị phân tìm kiếm theo đúng thứ tự của dãy số trong câu h i

với s nút 93 là nút g c.
- SV có thể vẽ cây nhị phân tìm kiếm kết qu ả cu i ố cùng ho c
ặ vẽ từng bước đều được tính úng đ Thang điểm : - SV vẽ úng đ
cây nhị phân tìm kiếm theo yêu c u t
ầ ừ trái sang ph i ả c a dãy s v ố ới nút
gốc là 93 sẽ được tr n s ố điểm.
- SV vẽ được 1/2 s ố nút (5 nút) úng đ ho c
ặ 1/3 số nút (3 nút) úng đ sẽ có thang điểm
tương ứng là 1/2 ho c ặ 1/3 i đ ểm c a ủ câu h i, ỏ với i
đ ều kiện nút g c ố c a ủ cây phải là nút 93 theo yêu c u.
- SV vẽ cây nhị phân tìm kiếm úng, đ nhưng nút g c ố sai (không ph i
ả 93) sẽ không có điểm.
b. Xóa lần lượt theo thứ tự các nút {54, 11, 93} (1.5 điểm) Lưu :
ý Khi xóa 1 nút, cân bằng cây khi xảy ra mất cân bằng, cho biết nút bị
mất cân bằng và loại mất cân bằng Đáp án : Sẽ ch p ấ nh n ậ các lời gi i ả đáp có l p ậ lu n
ậ hợp lý (như cân b ng cây ở câu 3.a sau ó xoá 3 s đ /node hoặc áp d ng qui t c cân b
ằng cây nhị phân tìm kiếm cân
bằng khi xoá 3 s /node ho c
ặ duyệt cây lấy ra các s /node sau ó đ xây cây nhị
phân tìm kiếm cân b ng) và cu i
ố cùng xây dựng được cây cân b ng AVL với chuỗi s ố ã cho ( đ ã lo đ i b 3 s ố/node).
MSSV:............................ Trang 2 / 4 Thang điểm :
- SV vẽ được cây cân bằng cu i
ố cùng úng đ và có l p ậ lu n
ậ hợp lý sẽ có tr n điểm (1.5 điểm)
- SV vẽ được cây cân b ng cu
i ố cùng úng, nh đ
ưng không trình bày lý do vì sao có cây kết qu : tr ừ 0.75 điểm.
c. Viết hàm đếm s nút trên câ ố
y chỉ có duy nhất 1 nút con phải (1 điểm) Thang điểm :
- SV có thể sử d ng hàm
đệ qui ho c vòng l ặ để p thực hiệ đ
n úng yêu cầu sẽ có trọn điểm câu hỏi. Đáp án tham khảo : int count(Tree* pTree) { if (pTree==NULL) return 0;
if ((pTree->left==NULL && pTree->right!=NULL)
return 1+count(pTree->left)+count(pTree->right);
else return count(pTree->left)+count(pTree->right); }
Câu 4 : (2 điểm)
Cho tập khóa K = {12, 44, 13, 88, 23, 94, 11, 39, 20, 16, 5} và hàm băm :,
H(key) = (2*key+5) %11 (key: khóa cần băm).,
Anh / chị hãy thực hiện : a. Vẽ hình từ ướ
ng b c việc lưu trữ từng khóa trong K vào bả ă ng b m có kích thước,
M=11, dùng hàm băm H và phương pháp nối kết trực tiếp để xử l ý xung t. độ (1 điểm) Đáp án : - SV ph i v
ả ẽ hình từng bước úng khi thêm t đ
ừng số vào bảng b m ă Thang điểm : - SV vẽ b ng b ăm g m 1
1 phần tử úng : 0.125 đ điểm - SV bố trí s u tiên vào b đầ ng b ăm úng : 0.125 đ điểm
- SV bố trí úng vào b đ ng b m nhóm ă ng đụ có s độ d
ố ư 4 (s 16, 5) : 0.125
- SV bố trí úng vào b đ ng b m nhóm ă ng đụ có s độ d
ố ư 6 (s 39,94) : 0.125
- SV bố trí úng vào b đ ng b m nhóm ă ng đụ có s độ d
ố ư 5 (s 44, 88, 94) : 0.25
- SV bố trí úng vào b đ ng b m nhóm ă ng đụ có s độ d ố ư 7 (23) : 0.125
- SV bố trí úng vào b đ ng b m các s ă không ng đụ (20, 13) : 0.125 độ
MSSV:............................ Trang 3 / 4
b. Định nghĩa cấu trúc dữ liệu cho bả ă ng b m ở câu a (1 điểm) Thang điểm :
- SV định nghĩa CTDL úng : 0.5 đ điểm #define M 11 typedef struct tagNODE { int key; tagNODE *next }NODE, *NODEPTR; - SV khai báo b ng b m ă úng : 0.5 đ điểm
/* khai bao mang bucket chua M con tro dau cua Mbucket */ NODEPTR bucket[M]; HẾT
MSSV:............................ Trang 4 / 4