Tổng hợp đề thi và đáp án môn cấu trúc dữ liệu giải thuật | Trường Đại học Sư Phạm Kỹ Thuật TPHCM

Tổng hợp đề thi và đáp án môn cấu trúc dữ liệu giải thuật | Trường Đại học Sư Phạm Kỹ Thuật TPHCM. Tài liệu gồm 6 trang, giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

1
TRƯỜNG ĐẠI HỌC SƯ PHẠM K THUT
TP.H CHÍ MINH
ĐỀ THI MÔN: CU TRÚC D LIU & GII THUT ………
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
Mã môn học: …DASA240179……
Hc k: I/2014-2015
ĐỀ SỐ: …01
Ngày thi: … 06/ 01 / 2015
Thời gian: …75 phút
Đề thi gồm …5…. trang
Sinh viên đưc s dng tài liu viết tay.
Câu 1: (1 đim)
Cho biết kết qu sau khi thc hin nhng thao tác sau trên stack x cha các kí tự. (1đ)
x.push('h');
x.push('e');
x.push('l');
cout << x.top();
x.pop();
cout << x.top();
x.pop(); x.push('l');
x.push('o');
cout << x.top();
x.pop();
cout << x.top();
x.pop();
cout << x.top();
x.pop();
Tr li: leolh
Câu 2: (1 đim)
Gi s bạn có 1 cây lưu các giá tr trong khong t 1 đến 100 và bạn đang mun tìm giá tr
45. Th t nào sau đây có thể là th t các node được kim tra.
a/ 5, 2, 1, 10, 39, 34, 77, 63
b/ 1, 2, 3, 4, 5, 6, 7, 8
c/ 9, 8, 63, 0, 4, 3, 2, 1
d/ 8, 7, 6, 5, 4, 3, 2, 1
e/ 50, 25, 26, 27, 40, 44, 42
Tr li: B
Câu 3: ( 1.5 đim)
S dng gii thuật QuickSort để sp xếp danh sách đặc như sau:
38, 81, 22, 48, 13, 69, 93, 14, 45
2
Tr li:
Pivot = 13
Hoán v A(0) và A(4)
13, 81, 22, 48, 38, 69, 93, 14, 45
Pivot = 38
1/ Hoán v A(1) và A(7)
13, 14, 22, 48, 38, 69, 93, 81, 45
2/ Hoán v A(3) và A(4)
13, 14, 22, 38, 48, 69, 93, 81, 45
Pivot = 93
1/ Hoán v A(6) và A(8)
13, 14, 22, 38, 48, 69, 45, 81, 93
Pivot = 69
1/ Hoán v A(5) và A(6)
13, 14, 22, 38, 48, 45, 69, 81, 93
Pivot = 48
1/ Hoán v A(4) và A(5)
13, 14, 22, 38, 45, 48, 69, 81, 93
Câu 4: (1.5 đim)
S nguyên t Palindrome hay còn gi s xuôi ngược nguyên tố. Nghĩa là, số này s
nguyên t, nếu viết xuôi hay ngược thì vn chính nó. d: 2, 3, 5, 7, 11, 101,
131, 151, 181, 191, v.v… Viết chương trình kiểm tra s nguyên N nhp vào phi s
nguyên t Palindrome hay không?
Tr li:
bool isSymetric(int n){
string s = std::to_string(n);
3
int len = s.length();
for (int i = 0; i<= len/2;i++){
if(s[i] != s[len-1-i])
return false;
}
return true;
}
bool isPrime(int n){
int i ;
if(n<=1)
return false;
i = 2;
while (i<n/2 && n % i !=0)
i++;
if(i<n/2)
return false;
return true;
}
bool isPalindrome(int n){
if(isSymetric(n) && isPrime(n))
return true;
return false;
}
Câu 5: (2.5 đim)
Gi s chúng ta đã có sẵn các hàm đ xây dng cây nh phân tìm kiếm. S dng lại chương
4
trình con kim tra s n có phi s Palindrome hay không câu 4, viết chương trình đếm
s ng s nguyên t Palindrome trên cây nh phân tìm kiếm, vi tham s đầu vào mt
cây nh phân tìm kiếm khác rng.
Tr li:
int calculatePalindromeNumbers(Node* root){
if(root == null)
return 0;
if(isPalindrome(root->info)==true)
return 1 + calculatePalindromeNumbers(root pLeft)
+ calculatePalindromeNumbers(root pRight);
return calculatePalindromeNumbers(root pLeft)
+ calculatePalindromeNumbers(root pRight);
}
Câu 6: (2.5 điểm)
Cho mt danh sách liên kết đơn, tạm gi tên là InList. To mt danh sách lien kết đơn, tạm
gọi OutList cùng kích thước vi InList vi giá tr ca các Node trong OutList ti v trí i
s là tng ca các node t v trí 0 đến i 1 trong InList. (2.5đ)
Ví d: InList: 1, 34, 2, 6, 8, 5
OutList: 1, 35, 37, 43, 51, 56.
Tr li
void buildOutList (LinkedList inList, LinkedList &outList){
if(inList == null)
return;
Node* p = inList.pHead;
initList(outList);
int data = 0;
while (p!=null){
data = data + p->info;
5
Node*q = createNode(data);
addLast(outList,q);
}
Node* createNode (int data){
Node* node = new Node();
node->info = data;
node->pNext = null;
return node;
}
void initList (LinkedList &list){
if(list==null)
list.pHead = list.pTail = NULL;
}
void addLast (LinkedList &list, Node* p ){
if(IsEmptyList(list))
list.pHead = list.pTail = p;
else{
list.pTail->pNext = p;
list.pTail = p;
}
}
6
Ghi chú: Cán b coi thi không giải thích đề thi.
TRƯỞNG NGÀNH
| 1/6

Preview text:

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT ĐỀ THI MÔN: …CẤU TRÚC DỮ LIỆU & GIẢI THUẬT ……… TP.HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
Mã môn học: …DASA240179……
Học kỳ: I/2014…-2015 …
Ngày thi: … 06/ 01 / 2015… Thời gian: …75 phút ĐỀ SỐ: …01…
Đề thi gồm …5…. trang
Sinh viên được sử dụng tài liệu viết tay. Câu 1: (1 điểm)
Cho biết kết quả sau khi thực hiện những thao tác sau trên stack x chứa các kí tự. (1đ) x.push('h'); x.push('e'); x.push('l'); cout << x.top(); x.pop(); cout << x.top(); x.pop(); x.push('l'); x.push('o'); cout << x.top(); x.pop(); cout << x.top(); x.pop(); cout << x.top(); x.pop();
Trả lời: leolh Câu 2: (1 điểm)
Giả sử bạn có 1 cây lưu các giá trị trong khoảng từ 1 đến 100 và bạn đang muốn tìm giá trị
45. Thứ tự nào sau đây có thể là thứ tự các node được kiểm tra.
a/ 5, 2, 1, 10, 39, 34, 77, 63 b/ 1, 2, 3, 4, 5, 6, 7, 8 c/ 9, 8, 63, 0, 4, 3, 2, 1 d/ 8, 7, 6, 5, 4, 3, 2, 1 e/ 50, 25, 26, 27, 40, 44, 42 Trả lời: B Câu 3: ( 1.5 điểm)
Sử dụng giải thuật QuickSort để sắp xếp danh sách đặc như sau:
38, 81, 22, 48, 13, 69, 93, 14, 45 1 Trả lời: Pivot = 13 Hoán vị A(0) và A(4)
13, 81, 22, 48, 38, 69, 93, 14, 45 Pivot = 38 1/ Hoán vị A(1) và A(7)
13, 14, 22, 48, 38, 69, 93, 81, 45 2/ Hoán vị A(3) và A(4)
13, 14, 22, 38, 48, 69, 93, 81, 45 Pivot = 93 1/ Hoán vị A(6) và A(8)
13, 14, 22, 38, 48, 69, 45, 81, 93 Pivot = 69 1/ Hoán vị A(5) và A(6)
13, 14, 22, 38, 48, 45, 69, 81, 93 Pivot = 48 1/ Hoán vị A(4) và A(5)
13, 14, 22, 38, 45, 48, 69, 81, 93 Câu 4: (1.5 điểm)
Số nguyên tố Palindrome hay còn gọi là số xuôi ngược nguyên tố. Nghĩa là, số này là số
nguyên tố, và nếu viết xuôi hay ngược thì nó vẫn là chính nó. Ví dụ: 2, 3, 5, 7, 11, 101,
131, 151, 181, 191, v.v… Viết chương trình kiểm tra số nguyên N nhập vào có phải là số
nguyên tố Palindrome hay không? Trả lời:
bool isSymetric(int n){
string s = std::to_string(n); 2 int len = s.length();
for (int i = 0; i<= len/2;i++){ if(s[i] != s[len-1-i]) return false; } return true; }
bool isPrime(int n){ int i ; if(n<=1) return false; i = 2; while (i i++; if(i return false; return true; }
bool isPalindrome(int n){
if(isSymetric(n) && isPrime(n)) return true; return false; } Câu 5: (2.5 điểm)
Giả sử chúng ta đã có sẵn các hàm để xây dựng cây nhị phân tìm kiếm. Sử dụng lại chương 3
trình con kiểm tra số n có phải là số Palindrome hay không ở câu 4, viết chương trình đếm
số lượng số nguyên tố Palindrome trên cây nhị phân tìm kiếm, với tham số đầu vào là một
cây nhị phân tìm kiếm khác rỗng. Trả lời:
int calculatePalindromeNumbers(Node* root){ if(root == null) return 0;
if(isPalindrome(root->info)==true)
return 1 + calculatePalindromeNumbers(root → pLeft)
+ calculatePalindromeNumbers(root→ pRight);
return calculatePalindromeNumbers(root → pLeft)
+ calculatePalindromeNumbers(root→ pRight); } Câu 6: (2.5 điểm)
Cho một danh sách liên kết đơn, tạm gọi tên là InList. Tạo một danh sách lien kết đơn, tạm
gọi là OutList cùng kích thước với InList với giá trị của các Node trong OutList tại vị trí i
sẽ là tổng của các node từ vị trí 0 đến i – 1 trong InList. (2.5đ)
Ví dụ: InList: 1, 34, 2, 6, 8, 5
→ OutList: 1, 35, 37, 43, 51, 56. Trả lời
void buildOutList (LinkedList inList, LinkedList &outList){ if(inList == null) return; Node* p = inList.pHead; initList(outList); int data = 0; while (p!=null){ data = data + p->info; 4 Node*q = createNode(data); addLast(outList,q); }
Node* createNode (int data){
Node* node = new Node(); node->info = data;
node->pNext = null; return node; }
void initList (LinkedList &list){ if(list==null)
list.pHead = list.pTail = NULL; }
void addLast (LinkedList &list, Node* p ){
if(IsEmptyList(list))
list.pHead = list.pTail = p; else{
list.pTail->pNext = p; list.pTail = p; } } 5
Ghi chú: Cán bộ coi thi không giải thích đề thi.
Ngày 26… tháng 12… năm 2015… TRƯỞNG NGÀNH GIẢNG VIÊN RA ĐỀ 6