You are on page 1of 10

TRƯỜNG ĐẠI HỌC ĐỀ THI KẾT THÚC HỌC PHẦN

KINH TẾ - KỸ THUẬT CÔNG NGHIỆP CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Hệ đào tạo: ĐẠI HỌC
KHOA CÔNG NGHỆ THÔNG TIN Thời gian làm bài: 90 phút, không kể thời gian phát đề

ĐỀ SỐ 1
Câu 1 (3 điểm)
a. Viết giải thuật sắp xếp Bubble Sort để sắp xếp một dãy số nguyên theo thứ tự
tăng dần.
Giải thuật
Void Bubble sort (int a[],int n)
{
int i, j;
for (i=0; i<n; i++)
for (j=n-1; j>I;j--)
if (a[j]<a[j-1])
swap (&a[j],&a[j-1]);
}
b. Minh họa giải thuật trên với dãy số đã cho sau:
42, 27, 15, 29, 21, 68, 34, 18

Dòng A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7]


1 42 27 15 29 21 68 34 18
2 42 27 15 29 21 34 68 18
3 42 27 15 21 29 39 68 18
4 42 15 27 21 29 39 68 18
5 15* 42 27 21 29 39 68 18
6 42 27 21 29 39 18 68
7 42 27 21 29 18 39 68
8 42 27 21 18 29 39 68
9 42 27 18 21 29 39 68
10 42 18 27 21 29 39 68
11 18 42 27 21 29 39 68
12 18* 42 27 21 29 39 68
13 27* 42 21 29 39 68
14 21* 42 29 39 68
15 29* 42 39 68
16 39* 42 68
17 42* 68
18 68*

15;18;27;21;29;39;42;68

Giai thich
a[0]= 42; a[1]= 27; a[2]= 15 ; a[3]= 29 ; a[4]= 21 ;a[5]=68 ; a[6]= 34; a[7]= 18
Ta có i=0; j = n-1= 8-1=7
Ta duyệt từ cuối dãy về vị trí j về i ta thấy a[6]=34 < a [6-1] =68 => đổi chỗ a[6] và
a[5]  42;27;15;29;21;34;68;18
J=j-1 = 6-1=5, thấy a[j]=a[5]=34>a[j-1]=a[4]=21dữ nguyên vị trí
Lập lại các bước
...

Câu 2 (3 điểm) Cho một danh sách nối đơn lưu trữ các số nguyên, giả sử đầu của danh
sách được trỏ bởi con trỏ p. Hãy viết thủ tục thực hiện các công việc sau:
a. Tạo nút cho danh sách
b. Bổ sung một nút mới vào giữa danh sách.
c. Tìm phần tử X trong danh sách.

Câu 3 (3 điểm) Cho một dãy A gồm các số nguyên như sau
6 11 5 10 15 20 2 7
Hãy tìm một dãy con (không nhất thiết phải liên tiếp nhau) dài nhất có tổng các số chia
hết cho số k = 3 (k nguyên dương).
a. Hãy dùng phương pháp quy hoạch động để giải quyết bài toán trên (Tạo bảng
phương án, Truy vết).
b. Viết giải thuật truy vết của bài toán trên.
Câu 4 (1 điểm) Viết dãy duyệt cây dưới đây theo thứ tự trước và thứ tự giữa.
TRƯỜNG ĐẠI HỌC ĐỀ THI KẾT THÚC HỌC PHẦN
KINH TẾ - KỸ THUẬT CÔNG NGHIỆP CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Hệ đào tạo: ĐẠI HỌC
KHOA CÔNG NGHỆ THÔNG TIN Thời gian làm bài: 90 phút, không kể thời gian phát đề

ĐỀ SỐ 2
Câu 1 (3 điểm)
a. Viết giải thuật sắp xếp Selection Sort để sắp xếp một dãy số nguyên theo thứ
tự tăng dần.
b. Minh họa giải thuật trên với dãy số đã cho sau:
30, 47, 35, 49, 41, 31, 24, 28

A,giải thuật
Void Selectionsort(int a[],int n)
{
int min;
for (int i=0;i<=n-1;i++)
{
min=i;
for (int j = i+1;j<n;j++)
if (a[j] < a[min] )
min = j;
if (i != min)
swap(&a[min],&a[i]);
}
}

Dòng A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] Doicho(a[min],a[i])
1 30 47 35 49 41 31 24 28 A[6]=24 là min
2 24* 47 35 49 41 31 30 28 Đổi chỗ (24,30)
3 47 35 49 41 31 30 28
4 28* 35 49 41 31 30 47 Đổi (28,47)
5 35 49 41 31 30 47
6 30* 49 41 31 35 47 Đổi (30,35)
7 49 41 31 35 47
31* 41 49 35 47 Đổi (31,49)
41 49 35 47
35* 49 41 47 Đổi (35,41)
49 41 47
41* 49 47 Đổi (41,49)
49 47
47* 49 Đổi (47,49)
49*
24;28;30;31;35;41;47;49
Sr(lười làm giải thich)
Câu 2 (3 điểm) Cho một danh sách nối đơn lưu trữ các số nguyên, giả sử đầu của danh
sách được trỏ bởi con trỏ p. Hãy viết thủ tục thực hiện các công việc sau:
a. Tạo nút cho danh sách
b. Bổ sung một nút mới vào đầu danh sách.
c. Xóa nút cuối của danh sách.

Câu 3 (3 điểm) Cho một dãy A gồm các số nguyên như sau
2 3 5 7 9 6 12 7
Hãy tìm một dãy con (không nhất thiết phải liên tiếp nhau) dài nhất có tổng các số chia
hết cho số k = 5 (k nguyên dương).
a. Hãy dùng phương pháp quy hoạch động để giải quyết bài toán trên (Tạo bảng
phương án, Truy vết).
b. Viết giải thuật truy vết của bài toán trên.
Câu 4 (1 điểm) Viết dãy duyệt cây dưới đây theo thứ tự trước và thứ tự sau.
TRƯỜNG ĐẠI HỌC ĐỀ THI KẾT THÚC HỌC PHẦN
KINH TẾ - KỸ THUẬT CÔNG NGHIỆP CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Hệ đào tạo: ĐẠI HỌC
KHOA CÔNG NGHỆ THÔNG TIN Thời gian làm bài: 90 phút, không kể thời gian phát đề

ĐỀ SỐ 3
Câu 1 (3 điểm)
a. Viết giải thuật sắp xếp Insertion Sort để sắp xếp một dãy số nguyên theo thứ
tự tăng dần.
Giải thuật
void InsertionSort (int a[], int n)
{
int i, k, j;
for (i = 1; i < n; i++)
{
k = a[i];
j = i-1;
while (j >= 0 && a[j] > k)
{
a[j+1] = [j];
j = j-1;
}
a[j+1] = k;
}
}
b. Minh họa giải thuật trên với dãy số đã cho sau:
30, 47, 35, 49, 21, 22, 24, 15

Câu 2 (3 điểm) Cho một danh sách nối vòng có nút cuối được trỏ bởi pList lưu trữ các
số nguyên.
a. Cài đặt danh sách trên.
b. Hãy bổ sung một nút mới với thông tin X vào cuối danh sách.
c. Hiển thị danh sách sau khi thêm nút X.

Câu 3 (3 điểm) Cho một balo khối lượng W=9. Có 5 đồ vật lần lượt như sau: Giá trị
C[i] = {3, 5, 6, 4, 1}; khối lượng A[i] = {3, 4, 5, 2, 1}. Hãy chọn các đồ vật để cho vào
ba lô sao cho các đồ vật được chọn có giá trị lớn nhất và khối lượng không vượt quá
khối lượng balo. Mỗi đồ vật có thể được chọn nhiều lần.
a. Hãy dùng phương pháp quy hoạch động để giải quyết bài toán trên (Tạo bảng
phương án, Truy vết).
b. Viết giải thuật truy vết của bài toán trên.
Câu 4 (1 điểm) Viết dãy duyệt cây dưới đây theo thứ tự trước và thứ tự sau.

TRƯỜNG ĐẠI HỌC ĐỀ THI KẾT THÚC HỌC PHẦN


KINH TẾ - KỸ THUẬT CÔNG NGHIỆP CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Hệ đào tạo: ĐẠI HỌC
KHOA CÔNG NGHỆ THÔNG TIN Thời gian làm bài: 90 phút, không kể thời gian phát đề

ĐỀ SỐ 4
Câu 1 (3 điểm)
a. Viết giải thuật sắp xếp Bubble Sort để sắp xếp một dãy số nguyên theo thứ tự
tăng dần.
b. Minh họa giải thuật trên với dãy số đã cho sau:
20, 37, 25, 39, 11, 5, 14, 15
Câu 2 (3 điểm) Cho một danh sách nối vòng có nút cuối được trỏ bởi pList lưu trữ các
số nguyên.
a. Cài đặt danh sách trên.
b. Hãy bổ sung một nút mới với thông tin X vào cuối danh sách.
c. Xóa nút đầu danh sách.

Câu 3 (3 điểm) Cho một balo khối lượng W=15. Có 5 đồ vật lần lượt như sau: Giá trị
C[i] = {4, 2, 1, 2, 10}; khối lượng A[i] = {12, 2, 1, 1, 4}. Hãy chọn các đồ vật để cho
vào ba lô sao cho các đồ vật được chọn có giá trị lớn nhất và khối lượng không vượt
quá khối lượng balo. Mỗi vật chỉ được chọn một lần
Hãy dùng phương pháp quy hoạch động để giải quyết bài toán trên (Tạo bảng phương
án, Truy vết).
c. Viết giải thuật truy vết của bài toán trên.
Câu 4 (1 điểm) Viết dãy duyệt cây dưới đây theo thứ tự trước và thứ tự giữa.

TRƯỜNG ĐẠI HỌC ĐỀ THI KẾT THÚC HỌC PHẦN


KINH TẾ - KỸ THUẬT CÔNG NGHIỆP CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Hệ đào tạo: ĐẠI HỌC
KHOA CÔNG NGHỆ THÔNG TIN Thời gian làm bài: 90 phút, không kể thời gian phát đề

ĐỀ SỐ 5
Câu 1 (3 điểm)
a. Viết giải thuật sắp xếp Heap Sort để sắp xếp một dãy số nguyên theo thứ tự
tăng dần.
Void heapsorp(int a[],int b)
{
Int i=a;
Int j = 2*i;
While (j<=b)
{
Int k=j+ 1;
If (k<=b && A[k]<A[j] )
J=k;
If(A[i]<A[j])
{
Swap(A[i],A[j]);
i=j;
j=2*i;
}
Else break;
}
}
b. Minh họa giải thuật trên với dãy số đã cho sau:
40 30 50 22 60 55 77 65

Câu 2 (3 điểm) Cho một danh sách nối vòng có nút cuối được trỏ bởi pList lưu trữ các
số nguyên.
a. Cài đặt danh sách trên.
b. Hãy bổ sung một nút mới với thông tin X vào đầu danh sách.
c. Xóa nút ở vị trí giữa của danh sách.

Câu 3 (3 điểm) Cho một balo khối lượng W=13. Có 5 đồ vật lần lượt như sau: Giá trị
C[i] = {4, 5, 6, 3, 1}; khối lượng A[i] = {3, 4, 5, 2, 1}. Hãy chọn các đồ vật để cho vào
ba lô sao cho các đồ vật được chọn có giá trị lớn nhất và khối lượng không vượt quá
khối lượng balo. Mỗi vật chỉ được chọn một lần
Hãy dùng phương pháp quy hoạch động để giải quyết bài toán trên (Tạo bảng phương
án, Truy vết).
a. Viết giải thuật truy vết của bài toán trên.
Câu 4 (1 điểm) Viết dãy duyệt cây dưới đây theo thứ tự trước và thứ tự giữa.

You might also like