Cấu trúc dữ liệu và Giải thuật (IT05)là một trong những môn học quan trọng trong chương trình đào tạo ngành Công nghệ Thông tin tại Trường Đại học Mở Hà Nội (EHOU). Môn học cung cấp kiến thức về cách tổ chức, lưu trữ và xử lý dữ liệu một cách hiệu quả, đồng thời giúp sinh viên hiểu rõ các thuật toán cơ bản và phương pháp tối ưu hóa trong lập trình.
Trong phần cấu trúc dữ liệu, sinh viên sẽ được học về các phương pháp tổ chức dữ liệu phổ biến như mảng, danh sách liên kết, ngăn xếp, hàng đợi, cây, bảng băm và đồ thị. Những cấu trúc này đóng vai trò quan trọng trong việc xây dựng và phát triển phần mềm, giúp cải thiện hiệu suất xử lý dữ liệu trong các ứng dụng thực tế.
Về phần giải thuật, môn học giới thiệu các phương pháp tìm kiếm, sắp xếp, thuật toán đệ quy, thuật toán trên đồ thị như BFS, DFS, Dijkstra, và các chiến lược chia để trị. Đây là những kiến thức cốt lõi giúp sinh viên giải quyết các bài toán lập trình một cách tối ưu, từ những bài toán nhỏ đến các hệ thống phức tạp.
Mục tiêu của môn học là giúp sinh viên hiểu sâu về cấu trúc dữ liệu và thuật toán, biết cách lựa chọn phương pháp phù hợp cho từng bài toán cụ thể. Ngoài ra, môn học còn giúp rèn luyện tư duy logic, nâng cao kỹ năng lập trình và ứng dụng thuật toán trong việc tối ưu hóa hiệu suất chương trình.
Môn học **Cấu trúc dữ liệu và Giải thuật (IT05)** là nền tảng quan trọng để sinh viên có thể tiếp cận các lĩnh vực nâng cao như trí tuệ nhân tạo, khoa học dữ liệu, an toàn thông tin và phát triển phần mềm chuyên sâu. Đây là bước đệm không thể thiếu cho những ai muốn trở thành lập trình viên chuyên nghiệp và nghiên cứu các thuật toán hiệu quả trong thực tiễn.
Mẹo Nhỏ Nên Đọc Qua
1. Để tìm kết quả nhanh thì nên sử dụng Máy Tính thay vì Điện Thoại.
2. Sau khi Sao chép (Copy) câu hỏi thì bấm “Ctrl + F” và Dán (Paste) câu hỏi vào ô tìm kiếm sẽ thấy câu cả lời. (Copy nguyên câu không ra thì thử vài từ để kiếm)
3. Trường hợp không tìm thấy câu hỏi. Lúc này vui lòng kéo xuống dưới cùng để đặt câu hỏi mục bình luận. Sẽ được trả lời sau ít phút.
4. Xem danh sách đáp án Trắc nghiệm EHOU
5. THAM GIA KHẢO SÁT VỀ CÂU HỎI (Khảo sát giúp chúng tôi biết sự trải nghiệm của Bạn, Bạn có thể đóng ý kiến giúp Chúng tôi tăng trải nghiệm của bạn. Đặc biệt chúng tôi chọn ra 1 người may mắn mỗi tuần để trao Mã Kích Hoạt LawPro 30 Miễn Phí)
6. Tham gia group Facebook Sinh Viên Luật để được hỗ trợ giải bài tập và Nhận Mã Kích hoạt tài khoản Pro Miễn Phí
7. Nếu đăng nhập mà không thấy đáp án thì làm như sau: Giữ Phím Ctrl sau đó bấm phím F5 trên bàn phím “Ctrl + F5” để trình duyệt xóa cache lúc chưa đăng nhập và tải lại nội dung.
Đáp Án Trắc Nghiệm Môn IT05 – EHOU
Chỉ Thành Viên MemberPro Mới xem được toàn bộ đáp án.
Click chọn vào hình ảnh để xem chi tiết gói MemberPro. Hoặc lựa chọn tùy chọn và cho vào giỏ hàng để mua ngay. Hoàn tiền 100% nếu không hài lòng.
MemberPro
Có thể mua gói Member Pro 100 ngày tương đương 1 kỳ học hoặc gói Member Pro 1000 ngày tương đương hết 3 năm học để xem và làm trắc nghiệm hết tất cả các môn, tải tài liệu về in ra với chi phí rẻ nhất và còn nhiều hỗ trợ cao cấp cho Member Pro .
Hoặc cũng có thể chỉ mua riêng lẻ môn này dưới đây
Môn IT05 EHOU
Xem được toàn bộ câu trắc nghiệm của môn này. Có 2 phiên bản là chỉ xem online và có thể tải tài liệu về để in ra
Mua xong xem đáp án Tại đây
ĐÁP ÁN TRẮC NGHIỆM CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT _IT05_THI VẤN ĐÁP TRỰC TUYẾN
Ðúng✅=> Ghi chú () là đáp án đúng
Câu 1: đúng nhất cho hàm Swap:
a. void Swap( int &X, int &Y)
{
int Temp = X;
X=Y;
Y = Temp;
return ;
Ðúng✅=> }
b. void Swap( floatX, float Y)
{
int Temp = X;
X=Y;
Y = Temp;
return ;
}
c. void Swap( int *X, int *Y)
{
int Temp = X;
X=Y;
Y = Temp;
return ;
}
d. void Swap( int X, int Y)
{
int Temp = X;
X=Y;
Y = Temp;
return ;
}
Câu 2: đúng nhất trong trường hợp tốt nhất khi phần tử ở giữa của mảng có giá trị bằng X:
a. Số phép gán: Gmin = 0 Số phép so sánh: Smin = 2
b. Số phép gán: Gmin = 2 Số phép so sán: Smin = 3
c. Số phép gán: Gmin = 2 Số phép so sánh: Smin = 2
Ðúng✅=> d. Số phép gán: Gmin = 3 Số phép so sánh: Smin = 2
câu
đúng nhất trong trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:
a. Số phép gán: Gmax = 2 Số phép so sánh: Smax = 2N + 2
b. Số phép gán: Gmax = 1 Số phép so sánh: Smax = N + 2
c. Số phép gán: Gmax = 2 Số phép so sánh: Smax = N + 1
Ðúng✅=> d. Số phép gán: Gmax = 2 Số phép so sánh: Smax = N + 2
câu
đúng nhất về danh sách liên kết đôi.
a. Vùng liên kết của một phần tử trong danh sách liên đôi có 01 mối liên kết với 02 phần tử khác trong danh sách
Ðúng✅=> b. Vùng liên kết của một phần tử trong danh sách đôi có 02 mối liên kết với 01 phần tử trong danh sách
c. Vùng liên kết của một phần tử trong danh sách liên đôi có 02 mối liên kết với phần tử đầu và cuối danh sách
d. Vùng liên kết của một phần tử trong danh sách liên kết đôi có 02 mối liên kết với phần tử trước và sau nó trong danh sách
Câu 3: ** Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp chọn trực tiếp (Selection Sort) để sắp xếp giảm dần, sau lần lặp thứ tư kết quả của dãy là thế nào?
a. 74, 23, 42, 11, 65, 58
b. 74, 65, 42, 11, 23, 58
Ðúng✅=> c. 74, 65, 58, 42, 23, 11
d. 74, 65, 58, 11, 23, 42
Câu 4: Bậc của cây có nghĩa là gì?
a. Cả hai phát biểu đều đúng
b. Cả hai phát biểu đều SAI
c. Là bậc nhỏ nhất của các nút trong cây
Ðúng✅=> d. Là bậc lớn nhất của các nút trong cây
Câu 5: Bậc của nút trong cây có nghĩa là gì?
Ðúng✅=> a. Là số nhánh con của nút đó
b. Là số nhánh con trái của nút đó
c. Là số nhánh con nhỏ nhất của nút con của nút đó
d. Là số nhánh con phải của nút đó
Câu 6: Các bước thực hiện tìm kiếm nhị phân phần tử x trên dẫy sắp xếp tăng dần được mô tả như sau:
Bước 1: Khởi đầu tìm kiếm trên tất cả các phần tử của dãy <=> left = 0 và right = n-1
Bước 2: Tính middle = (left + right)/2. So sánh a[middle] với x. Có 3 khả năng:
– a[middle] = x => Tìm thấy => Dừng
– a[middle] > x => tiếp tục tìm x trong dãy con mới với right = middle – 1 (tìm trong nửa đầu)
– a[middle] < x => tiếp tục tìm x trong dãy con mới với ………………………. (tìm trong nửa cuối)
Bước 3:
– Nếu left <= right => dãy còn phần tử, tiếp tục quay lại bước 2 để tìm kiếm tiếp
– Ngược lại => Dãy hiện hành hết phần tử và dừng thuật toán
Giá trị cần điền vào dấu ………….. là bao nhiêu để thuật toán thực hiện đúng
a. left = middle + 1
b. right = middle – 1
c. left = middle – 1
d. right = midle + 1
Câu 7: Các bước thực hiện tìm kiếm nhị phân phần tử x trên dẫy sắp xếp tăng dần được mô tả như sau:
Bước 1: Khởi đầu tìm kiếm trên tất cả các phần tử của dãy c left = …………… và right = ………………
Bước 2: Tính middle = (left + right)/2. So sánh a[middle] với x. Có 3 khả năng:
– a[middle] = x => Tìm thấy => Dừng
– a[middle] > x => tiếp tục tìm x trong dãy con mới với right = middle – 1 (tìm trong nửa đầu)
– a[middle] < x => tiếp tục tìm x trong dãy con mới với left = middle + 1 (tìm trong nửa cuối)
Bước 3:
– Nếu left <= right => dãy còn phần tử, tiếp tục quay lại bước 2 để tìm kiếm tiếp
– Ngược lại => Dãy hiện hành hết phần tử và dừng thuật toán
Giá trị cần điền vào dấu ………….. là bao nhiêu để thuật toán thực hiện đúng
a. 0 và n
b. n và 0
c. n-1 và 0
d. 0 và n-1
Câu 8: Các dạng biểu diễn của biểu thức toán học gồm
a. Tiền tố và hậu tố
b. Tiền tố và trung tố
c. Trung tố và hậu tố
d. Tiền tố, trung tố và hậu tố
Câu 9: Các hàm để cấp phát bộ nhớ là?.
a. calloc(), new(), free()
b. malloc(), calloc(), new()
c. malloc(), calloc(), new(), free()
d. malloc(), delete(), new(), free().
Câu 10: Các hàm để giải phóng bộ nhớ là
a. calloc(), delete(), new(), free().
b. delete(),free().
c. malloc(), delete(), free().
d. malloc(), delete(), new(), free().
Câu 11: Các loại danh sách liên kết gồm:
a. Danh sách liên kết đơn và danh sách liên kết vòng
b. Danh sách liên kết đơn và danh sách liên kết kép
c. Danh sách liên kết đơn, danh sách liên kết kép và danh sách liên kết vòng
d. Danh sách liên kết kép và danh sách liên kết vòng
Câu 12: Các phương pháp tìm kiếm là
a. Tìm kiếm nhị phân
b. Tất cả các đáp án đều sai
c. Tìm kiếm tuyến tính và nhị phân
d. Tìm kiếm tuyến tính
Câu 13: Các thành phần của danh sách đơn gồm:
a. Số phần tử của danh sách (number)
b. Dữ liệu (data) và liên kết (link)
c. Liên kết (link)
d. Dữ liệu (data)
Câu 14: Các thành phần của danh sách liên kết kép gồm:
a. Dữ liệu (infor) và liên kết với nút sau (next)
b. Dữ liệu (infor) và liên kết với nút trước (previous)
c. Liên kết với nút trước (previous) và liên kết với nút sau (next)
d. Dữ liệu (infor), liên kết với nút trước (previous) và liên kết với nút sau (next)
Câu 15: Các thao tác cơ bản trên danh sách gồm thao tác gì:
a. tách, ghép, …
b. tìm kiếm, sắp xếp, sao chép
c. bổ sung, loại bỏ, cập nhật
d. Tất cả các thao tác trên
Câu 16: Các thao tác được định nghĩa cho hàng đợi một cách tổng quát
a. Get
b. Cả hai đáp án đều sai
c. Cả hai đáp án đều đúng
d. Put
Câu 17: Các trường hợp chèn thêm một phần tử mới vào danh sách liên kết đơn gồm:
a. Chèn thêm vào đầu danh sách, vào cuối danh sách và vào sau một phần tử q đã biết
b. Chèn thêm vào cuối danh sách và vào sau một phần tử q đã biết
c. Chèn thêm vào đầu danh sách và vào sau một phần tử q đã biết
d. Chèn thêm vào đầu danh sách và vào cuối danh sách
Câu 18: Các trường hợp có thể xảy ra khi xóa một phần tử khỏi cây NPTK gồm:
a. Nút xóa có một nhánh con và nút xóa có hai nhánh con
b. Nút xóa là nút lá và nút xóa có hai nhánh con
c. Nút xóa là nút lá và nút xóa có một nhánh con
d. Nút xóa là nút lá, nút xóa có một nhánh con và nút xóa có hai nhánh con
Câu 19: Các trường hợp thực hiện hủy phần tử khỏi danh sách liên kết đơn gồm:
a. Hủy phần tử đầu danh sách và hủy phần tử đứng sau phần tử q
b. Hủy phần tử đầu danh sách và hủy phần tử có giá trị xác định k
c. Hủy phần tử có giá trị xác định k và hủy phần tử đứng sau phần tử q
d. Hủy phần tử đầu danh sách, hủy phần tử đứng sau phần tử q và hủy phần tử có giá trị xác định k
Câu 20: Các ứng dụng cơ bản của hàng đợi gồm
a. Đảo ngược xâu ký dự
b. Chuyển đổi cơ số
c. Tất cả các phương án đều đúng
d. Tất cả các phương án đều sai
Câu 21: Cây là đồ thị vô hướng liên thông
a. Không có chu trình
b. Không có đỉnh cô lập
c. Không có đỉnh treo
d. Không có cạnh cầu
Câu 22: Cho biết các nút có bậc bằng 0 trong hình ảnh sau:
a. 28, 30, 32, 35, 38
b. 30, 35, 50, 40
c. 45, 47, 50, 55
d. 28, 32, 38, 47, 55
Câu 23: Cho biết đây là ý tưởng của thuật toán nào:
Xuất phát từ dãy đầu a0, a1, …, ai, xét các phần tử sau đó từ ai+1 đến an xem có phần tử nào nhỏ hơn ai không thì hoán đổi vị trí => Sau mỗi lần luôn được dãy a0, a1, …, ai đã được sắp thứ tự
a. Ý tưởng của thuật toán sắp xếp InterchangeSort
b. Ý tưởng của thuật toán tìm kiếm tuyến tính
c. Ý tưởng của thuật toán sắp xếp InsertionSort
d. Ý tưởng của thuật toán tìm kiếm nhị phân
Câu 24: Cho biết kết quả của đoạn chương trình sau:
int F(int a[], int n)
{
if (n==1)
return a[0];
else
return 1 + F(a,n-1);
}
int main()
{
int a[] = {2, 3, 4, 5, 6};
printf(“%d”,F(a,5));
getch();
}
a. 5
b. 4
c. 7
d. 6
Câu 25: Cho biết kết quả của đoạn chương trình sau:
int F(int a[], int n)
{
if (n==1)
return a[0];
else
return a[n-1] + F(a,n-1);
}
int main()
{
int a[] = {2, 3, 4, 5, 6};
printf(“%d”,F(a,5));
getch();
}
a. 14
b. 2
c. 18
d. 20
Câu 26: Cho biết kết quả của đoạn chương trình sau:
long f5(int n)
{
if (2*n==2)
return 2;
else
return 2*n + f5(n-1);
}
int main()
{
long x = f5(3);
printf(“%ld”, x);
getch();
}
a. 10
b. 6
c. 2
d. 12
Câu 27: Cho biết kết quả khi CTC CreateTree_mang(T) được gọi trong chương trình chính
int insertNode(Tree &T, int x){ if (T != NULL) { if (T->key == x) return -1; if (T->key > x) return insertNode(T->Left, x); else if (T->key < x) return insertNode(T->Right, x); } T = (Node *) malloc(sizeof(Node)); if (T == NULL) return 0; T->key = x; T->Left = T->Right = NULL; return 1;}
void DuyetCay(Tree T){ if(T!=NULL) { LNR(T->Left); printf(“%7d”,T->key); LNR(T->Right); }}
void CreateTree_mang(Tree &T){ int x; int n=7; int a[] = { 8, 6, 10, 4, 9, 7, 11}; for(int i=0;i<n;i++) { int check = insertNode(T, a[i]); if (check == -1) printf(“\n Node da ton tai!”); else if (check == 0) printf(“\n Khong du bo nho”); }
printf(“\n Duyet cay:”); DuyetCay(T);
}
a. Duyet cay : 4 7 6 9 11 10 8
b. Duyet cay : 8 6 4 7 10 9 11
c. Duyet cay : 8 6 10 4 9 7 11
d. Duyet cay: 4 6 7 8 9 10 11
Câu 28: Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LNR (Left-Node-Right)?
a. 28, 32, 30, 38, 35, 47, 45, 55, 50, 40
b. 28, 30, 32, 35, 38, 40, 45, 47, 50, 55
c. 40, 35, 30, 28, 32, 38, 50, 45, 47, 55
d. 55, 50, 45, 47, 40, 38, 35, 32, 30, 28
Câu 29: Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LRN (Left-Right-Node)?
a. 40, 35, 30, 28, 32, 38, 50, 45, 47, 55
b. 28, 30, 32, 35, 38, 40, 45, 47, 50, 55
c. 28, 32, 30, 38, 35, 47, 45, 55, 50, 40
d. 55, 50, 45, 47, 40, 38, 35, 32, 30, 28
Câu 30: Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt NLR (Node-Left-Right)?
/
a. 28, 30, 32, 35, 38, 40, 45, 47, 50, 55
b. 28, 32, 30, 38, 35, 47, 45, 55, 50, 40
c. 55, 50, 45, 47, 40, 38, 35, 32, 30, 28
d. 40, 35, 30, 28, 32, 38, 50, 45, 47, 55
Câu 31: Cho biết kết quả sau khi thực hiện đoạn chương trình sau:
int main()
{
int a[20], n,i,k;
k = a[0];
for(i=0; i<n; i++)
if (a[i] > k)
k = a[i];
}
a. a[k] có giá trị nhỏ nhất
b. a[k] có giá trị lớn nhất
c. k có giá trị lớn nhất
d. k có giá trị nhỏ nhất
Câu 32: Cho biết kết xuất của đoạn chương trình sau:
long F(int n)
{
if ((2*n+1) ==1)
return 1;
else
return (2*n+1)+F(n-1);
}
void main()
{
long x=F(3);
printf(“%ld”, x);
}
a. 16.00
b. 6
c. 16
d. 9
Câu 33: Cho các bước mô tả thuật toán như sau:
Nếu danh sách rỗng:
DQ.Head = new_element;
DQ.Tail = DQ.Head;
Ngược lại (d/s khác rỗng):
new_element -> next = DQ.Head;
DQ.Head -> pre = new_element;
DQ.Head = new_element;
Đây là mô tả của thuật toán chèn một phần tử vào danh sách liên kết đôi với vị trí chèn là?
a. Chèn sau phần tử đã biết
b. Chèn vào cuối danh sách
c. Chèn trước phần tử đã biết
d. Chèn vào đầu danh sách
Câu 34: Cho các phần tử 5, 10, 3, 42 lần lượt được bổ sung vào hàng đợi (Queue). Phần tử nào được lấy ra cuối cùng
a. 10
b. 3
c. 42
d. 5
Câu 35: Câu 36: Cho các phần tử 5, 10, 3, 42 lần lượt được bổ sung vào hàng đợi (Queue). Phần tử nào được lấy ra đầu tiên
a. 3
b. 10
c. 42
d. 5
Câu 37: Cho các phần tử sau: 31, 19, 36, 20, 41, 17, 33, 32. Tạo cây NPTK từ các phần tử trên. Hãy cho biết sau khi xóa phần tử 33 trên cây sau đó áp dụng phương pháp duyệt LNR thì kết quả thu được thứ tự các phần tử là như thế nào?
a. 31, 19, 17, 20, 36, 32, 41
b. 17, 19, 20, 31, 32, 36, 41
c. 31, 19, 36, 20, 41, 17, 32
d. 17, 20, 19, 32, 41, 36, 31
Câu 38: Cho các phần tử sau: 31, 19, 36, 20, 41, 17, 33, 32. Tạo cây NPTK từ các phần tử trên. Hãy cho biết sau khi xóa phần tử 33 trên cây sau đó áp dụng phương pháp duyệt NRL thì kết quả thu được thứ tự các phần tử là như thế nào?
a. 31, 19, 36, 20, 41, 17, 32
b. 41, 36, 32, 31, 20, 19, 17
c. 31, 36, 41, 32, 19, 20, 17
d. 41, 32, 36, 20, 17, 19, 31
Câu 39: Cho các phần tử sau: 31, 19, 36, 20, 41, 17, 33, 32. Tạo cây NPTK từ các phần tử trên. Hãy cho biết sau khi xóa phần tử 33 trên cây sau đó áp dụng phương pháp duyệt RLN thì kết quả thu được thứ tự các phần tử là như thế nào
a. 31, 36, 41, 32, 19, 20, 17
b. 41, 36, 32, 31, 20, 19, 17
c. 31, 19, 36, 20, 41, 17, 32
d. 41, 32, 36, 20, 17, 19, 31
Câu 40: Cho các phần tử sau: 31, 19, 36, 20, 41, 17, 33, 32. Tạo cây NPTK từ các phần tử trên. Hãy cho biết sau khi xóa phần tử 33 trên cây sau đó áp dụng phương pháp duyệt RNL thì kết quả thu được thứ tự các phần tử là như thế nào?
a. 31, 36, 41, 32, 19, 20, 17
b. 41, 32, 36, 20, 17, 19, 31
c. 41, 36, 32, 31, 20, 19, 17
d. 31, 19, 36, 20, 41, 17, 32
Câu 41: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LNR là:
/
a. 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
b. 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
c. 8, 6, 14, 16, 11, 33, 31, 46, 36, 30
d. 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
Câu 42: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LRN là:
/
a. 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
b. 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
c. 8, 6, 14, 16, 11, 33, 31, 46, 36, 30
d. 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
Câu 43: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự RNL là:
/
a. 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
b. 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
c. 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
d. 8, 6, 14, 16, 11, 33, 31, 46, 36, 30
Câu 44: Cho cây NPTK, chọn biểu thức tương ứng với cây:
a. (3+4)*((8-2)*6)
b. (3+4*8-2*6)
c. (3+4)*(8-(2*6))
Câu 45: Cho Danh sách liên kết đôi chứa danh sách Cán Bộ (CB), Đoạn mã sau đây thực hiện gì?
void InDSCanBo (DList Q)
{
Node *p;
for(p=Q.Tail; p!=NULL; p=p->pre)
{
System.out.print(“%5d”, p->info.mcb);
System.out.print(“%15s”, p->info.hoten);
System.out.print(“%10s”, p->info.ns);
System.out.print(“%7.1f”, p->info.hsl);
System.out.print(“%7.0f”, p->info.pc);
}
}
a. In danh sách tên các cán bộ đang có trong danh sách Q lần lượt từ cuối danh sách về đầu danh sách
b. In đầy đủ thông tin tất cả các cán bộ đang chứa trong danh sách Q lần lượt từ đầu danh sách về cuối danh sách
c. In đầy đủ thông tin tất cả các cán bộ đang chứa trong danh sách Q
d. In đầy đủ thông tin tất cả các cán bộ đang chứa trong danh sách Q lần lượt từ cuối danh sách về đầu danh sách
Câu 46: Cho dãy 10, 5, 7, 3, 9, 2, 15, 1. Cho biết kết quả sau lần duyệt thứ nhất của thuật toán sắp xếp tăng dần bằng QuickSort
a. 1, 2, 3, 5, 7, 9, 15, 10
b. 1, 2, 3,7,9, 5, 15, 10
c. 1, 2, 3, 5, 9, 7, 15, 10
d. 1, 2, 5, 7, 9, 3, 15, 10
Câu 47: Cho dãy 10, 5, 7, 3, 9, 2, 15, 1. Dùng thuật toán sắp xếp tăng dần bằng QuickSort, cho biết ở lần duyệt thứ nhất giá trị của x, L và R là gì?
a. L=0; R=8; x=9;
b. L=0; R=8; x=9;
c. L=0; R=7; x=3;
d. L=1; R=7; x=3;
Câu 48: Cho dãy sau: 23, 78, 45, 8, 32, 56. Dùng phương pháp sắp xếp chọn trực tiếp (Selection Sort) để sắp xếp tăng dần, sau 2 lần lặp thì kết quả của dãy là thế nào?
a. 23, 78, 45, 8, 32, 56
b. 8, 23, 32, 78, 56, 45
c. 8, 23, 45, 78, 32, 56
d. 8, 23, 78, 45, 32, 56
Câu 49: Cho dãy sau: 23, 78, 45, 8, 32, 56. Dùng phương pháp sắp xếp chọn trực tiếp (Selection Sort) để sắp xếp tăng dần, sau 5 lần lặp thì kết quả của dãy là thế nào?
a. 23, 78, 45, 8, 32, 56
b. 8, 23, 32, 78, 56, 45
c. 8, 23, 32, 45, 56, 78
d. 8, 23, 78, 45, 32, 56
Câu 50: Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp chèn trực tiếp (Insertion Sort) để sắp xếp tăng dần, sau 2 lần lặp kết quả của dãy là thế nào?
a. 11, 23, 42, 65, 74, 58
b. 23, 42, 74, 11, 65, 58
c. 11, 23, 58, 65, 42, 74
d. 11, 23, 42, 74, 58, 65
Câu 51: Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp chèn trực tiếp (Insertion Sort) để sắp xếp tăng dần, sau 5 lần lặp kết quả của dãy là thế nào?
a. 11, 23, 42, 58, 65, 74
b. 11, 23, 42, 74, 58, 65
c. 11, 23, 58, 65, 42, 74
d. 11, 23, 42, 65, 58, 74
Câu 52: Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp đổi chỗ trực tiếp (Interchange Sort) để sắp xếp tăng dần, sau 3 lần lặp kết quả của dãy là thế nào?
a. 11, 23, 42, 65, 58, 74
b. 11, 23, 42, 58, 74, 65
c. 11, 23, 42, 58, 65, 74
d. 11, 23, 42, 74, 65, 58
Câu 53: Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp đổi chỗ trực tiếp (Interchange Sort) để sắp xếp tăng dần, sau 4 lần lặp kết quả của dãy là thế nào?
a. 11, 23, 42, 58, 65, 74
b. 11, 23, 42, 58, 74, 65
c. 11, 23, 42, 65, 58, 74
d. 11, 23, 42, 74, 65, 58
Câu 54: Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần, sau 4 lần lặp kết quả của dãy là thế nào?
a. 11, 23, 42, 58, 65, 74
b. 11, 23, 58, 42, 65, 74
c. 11, 23, 58, 42, 74, 65
d. 42, 23, 74, 11, 65, 58
Câu 55: Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp phân hoạch (Quick Sort), điểm chốt a[middle] ban đầu là:
a. a[middle] = 23
b. a[middle] = 11
c. Các đáp án đưa ra đều không đúng
d. a[middle] = 74
Câu 56: Cho dãy số sau: 30, 18, 35, 17, 40, 16, 32, 31, 43, 19. Cho biết kết quả khi duyệt cây được tạo lần lượt từ các phần tử trên bằng phương pháp duyệt LRN (Left Right Node ):
a. 30, 18, 17, 16, 19, 35, 32, 31, 40, 43
b. 16, 17, 19, 18, 31, 32, 43, 40, 35, 30
c. 30, 18, 35, 17, 40, 16, 32, 31, 43, 19
d. 30, 35, 40, 43, 32, 31, 18, 19, 17, 16
Câu 57: Cho dãy số sau: 30, 18, 35, 17, 40, 16, 32, 31, 43, 19. Cho biết kết quả khi duyệt cây được tạo lần lượt từ các phần tử trên bằng phương pháp duyệt NLR (Node Left Right):
a. 16, 17, 18, 19, 30, 31, 32, 35, 40, 43
b. 30, 18, 35, 17, 40, 16, 32, 31, 43, 19
c. 30, 18, 17, 16, 19, 35, 32, 31, 40, 43
d. 30, 35, 40, 43, 32, 31, 18, 19, 17, 16
Câu 58: Cho dãy số sau: 30, 18, 35, 17, 40, 16, 32, 31, 43, 19. Cho biết kết quả khi duyệt cây được tạo lần lượt từ các phần tử trên bằng phương pháp duyệt RNL(Right Node Left):
a. 16, 17, 19, 18, 31, 32, 43, 40, 35, 30
b. 43, 40, 35, 32, 31, 30, 19, 18, 17, 16
c. 30, 18, 35, 17, 40, 16, 32, 31, 43, 19
d. 30, 35, 40, 43, 32, 31, 18, 19, 17, 16
Câu 59: Cho đồ thị trọng số G = <V,E> như hình vẽ. Hãy cho biết đâu là tập cạnh của cây bao trùm ngắn nhất được xây dựng theo thuật toán Prim. Giả sử bắt đầu từ đỉnh 1
a. T = { (1, 2), (1, 4), (2, 4), (2, 6), (4, 5), (6, 7) }
b. T={(1, 2), (1, 4), (1, 3), (2, 6), (4, 5), (6,7 )}
c. T = { (1, 4), (4, 3), (1, 2), (4, 5), (2, 6), (6,7) }
d. T={(1, 2), (1, 4), (2, 3), (2, 6), (6, 3), (6, 7)}
Câu 60: Cho đồ thị vô hướng có 5 đỉnh với tổng bậc các đỉnh là 10. Vậy số số cạnh của đồ thị là bao nhiêu
a. 5
b. 4
c. 3
d. 6
Câu 61: Cho đồ thị vô hướng như hình vẽ. Đỉnh nào dưới đây là đỉnh treo của đồ thị:
a. Đỉnh a
b. Đỉnh d
c. Đỉnh f
d. Đỉnh b
Câu 62: Cho đồ thị vô hướng như hình vẽ. Đỉnh nào dưới đây là đỉnh treo của đồ thị:
a. Đỉnh f
b. Đỉnh b
c. Đỉnh a
d. Đỉnh d
Câu 63: Cho đoạn chương trình như sau:
void AddAfter(DLIST &DQ, DNode *q, DNode *new_element)
{
DNode *p = q -> next;
if (q != NULL)
{
new_element -> next = p;
new_element -> pre = q;
q -> next = new_element;
if (p != NULL)
…[1]…
if (q == DQ.Tail)
DQ.Tail = new_element;
}
else
AddFirst( DQ, new_element);
}
Đoạn lệnh nào được điền vào [1] cho đúng?
a. new_element = p -> pre;
b. p -> pre = new_element;
c. p -> next = new_element;
d. p -> pre = NULL;
Câu 64: Cho đoạn chương trình như sau:
void RemoveHead( DLIST &DQ )
{
DNode*p;
if ( DQ.Head != NULL)
{
p = DQ.Head;
DQ.Head = DQ.Head -> next;
(…1…)
free(p);
if ( DQ.Head == NULL)DQ.Tail = NULL;
}
}
Đoạn lệnh được đưa vào (1) là?
a. DQ.Head -> pre = NULL;
DQ.Head -> next= NULL;
b. DQ.Head -> next = NULL;
c. DQ.Head -> pre = NULL;
d. Các đáp án đều sai
Câu 65: Cho đoạn chương trình:
void QuickSort( int a[ ], int L , int R )
{
int i,j,x;
x= a[(L+R)/2];
i = L; j = R;
do
{
while ( a[i] < x ) i++;
while ( a[j] > x ) j–;
if ( i <= j )
{
Hoanvi (a[i], a[j]);
i++; j–;
}
} while(i<j);
if (L<j) ….
if (i<R) ….
}
Điền giá trị nào vào đoạn …. cho đúng
a. QuickSort(a,i,R);
QuickSort(a,L,j);
b. QuickSort(a,L,j);
QuickSort(a,i,R);
c. QuickSort(a,j,L);
QuickSort(a,i,R);
d. QuickSort(a,L,j);
QuickSort(a,R,i);
Câu 66: Cho đoạn chương trình:
void QuickSort( int a[ ], int L , int R )
{
int i,j,x;
x= a[(L+R)/2];
i =…;
j = …;
do
{
while ( a[i] < x ) i++;
while ( a[j] > x ) j–;
if ( i <= j )
{
Hoanvi (a[i], a[j]);
i++; j–;
}
} while(i<j);
if (L<j) QuickSort(a,L,j);
if (i<R) QuickSort(a,i,R);
}
Điền giá trị nào vào đoạn …. cho đúng
a. i=0; j=n-1;
b. i=0; j=R;
c. i=L; j=n-1;
d. i=L; j=R;
Câu 67: Cho đoạn chương trình:
void QuickSort( int a[ ], int L , int R )
{
int i,j,x;
x=……..;
i = L; j = R;
do
{
while ( a[i] < x ) i++;
while ( a[j] > x ) j–;
if ( i <= j )
{
Hoanvi (a[i], a[j]);
i++; j–;
}
} while(i<j);
if (L<j) QuickSort(a,L,j);
if (i<R) QuickSort(a,i,R);
}
Điền giá trị nào vào đoạn …. cho đúng
a. a[(L+R)/2]
b. a[R/2]
c. a[(L+R)]
d. a[(L-R)/2]
Câu 68: Cho đoạn chương trình:
void QuickSort( int a[ ], int L , int R )
{
int i,j,x;
x=……..;
i = L; j = R;
do
{
while ( a[i] < x ) i++;
while ( a[j] > x ) j–;
if ( i <= j )
{
Hoanvi (a[i], a[j]);
i++; j–;
}
} while(i<j);
if (L<j) QuickSort(a,L,j);
if (i<R) QuickSort(a,i,R);
}
Điền giá trị nào vào đoạn …. cho đúng
a. a[(L+R)]
b. a[(L+R)/2]
c. a[(L-R)/2]
d. a[R/2]
Câu 69: Cho đoạn mã cài đặt phương pháp duyệt NLR:
void NLR( Tree Root )
{
if ( root != NULL )
{
< Xử lý Root >; NLR ( Root -> Left );
NLR(Root->Left) ;
[1] ……….
}
}
Đoạn mã điền vào phần trống ở dòng số [1]
a. LRN ( Root -> Left );
b. NLR ( Root -> Left );
c. NLR ( Root -> Right );
d. LRN ( Root -> Right );
Câu 70: Cho đoạn mã sau
stack <int> s; for (int i = 1; i <= 4; i++)
s.push(i);
Phần tử được lấy ra đầu tiên của Stack là gì?
a. 3
b. 1
c. 4
d. 2
Câu 71: Cho đoạn mã sau
stack <int> s; for (int i = 1; i <= 5; i++)
s.push(i);
Phần tử được lấy ra cuối cùng của Stack là gì?
a. 2
b. 1
c. 3
d. 4
Câu 72: Cho đoạn mã sau
stack <int> s; for (int i = 1; i <= 5; i++)
s.push(i);
s.pop();
Kết quả các phần tử của Stack sau khi thực hiện các đoạn mã trên là gì?
a. 1, 2, 3, 4
b. 1, 2, 3
c. 2, 3, 4, 5
d. 1, 3, 5
Câu 73: Cho đoạn mã sau
stack <int> s; for (int i = 1; i <= 5; i++)
s.push(i);
while (!s.empty()) {
cout << s.top() << endl; s.pop(); }
Kết quả in lên màn hình là gì?
a. 1, 2, 3, 4, 5
b. 5, 4, 3, 2, 1
c. 2, 4, 5
d. 1, 3, 5
Câu 74: Cho đoạn mã sau, cho biết đoạn mã biểu diễn thuật toán gì?
Bước 1: S = 1, i = 1;
Bước 2: Nếu i<n thì s = s*i, qua bước 3;
Ngược lại qua bước 4;
Bước 3: i = i + 1;
Quay lại bước 2;
Bước 4: Xuất S ra màn hình
a. Tính tổng các giá trị 1*1*2*3*…*n
b. Tính tổng các giá trị 1+2+3+…+n
c. Tính n!
d. Tính (n-1)!
Câu 75: Cho đoạn mã sau, cho biết kết quả của x?
Queue Q;
InitQueue(Q);
Put(Q, “Green”);
Put(Q, “Red”);
Put(Q, “Yellow”);
Get(Q,x);
a. Green
b. Yellow
c. Tất cả các phương án đều sai
d. Red
Câu 76: Cho đoạn mã sau, cho biết kết quả của x?
Queue Q;
InitQueue(Q);
Put(Q, “Green”);
Put(Q, “Red”);
Put(Q, “Yellow”);
Get(Q,x);
Get(Q,x);
a. Green
b. Yellow
c. Tất cả các phương án đều sai
d. Red
Câu 77: Cho đoạn mã sau, cho biết kết quả của x?
Stack S;
InitStack(S);
Push(S, “Green”);
Push(S, “Red”);
Push(S, “Yellow”);
Pop(S,x);
a. Red
b. Tất cả các phương án đều đúng
c. Yellow
d. Green
Câu 78: Cho đoạn mã sau, cho biết kết quả của x?
Stack S;
InitStack(S);
Push(S, “Green”);
Push(S, “Red”);
Push(S, “Yellow”);
Pop(S,x);
Pop(S, x);
a. Green
b. Yellow
c. Red
d. Tất cả các phương án đều đúng
Câu 79: Cho đoạn mã sau, cho biết kết quả của x?
Stack S;
InitStack(S);
Push(S, “Green”);
Push(S, “Red”);
Push(S, “Yellow”);
Pop(S,x);
Pop(S, x);
a. Red
b. Tất cả các phương án đều đúng
c. Yellow
d. Green
Câu 80: Cho đoạn mã sau, cho biết kết quả của x?
Stack S;
InitStack(S);
Push(S, “Green”);
Push(S, “Red”);
Push(S, “Yellow”);
Pop(S,x);
Pop(S, x);
a. Yellow
b. Green
c. Tất cả các phương án đều đúng
d. Red
Câu 81: Cho đoạn mã sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
Khai báo CTDL trên là khai báo CTDL dạng gì?
a. Danh sách liên kết đôi
b. Danh sách liên kết đơn
c. Danh sách liên kết vòng đôi
d. Danh sách liên kết vòng
Câu 82: Cho đoạn mã sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Khai báo Cấu trúc dữ liệu trên là khai báo CTDL dạng gì?
a. Danh sách liên kết vòng đôi
b. Danh sách liên kết đơn
c. Danh sách liên kết đôi
d. Danh sách liên kết vòng
Câu 83: Cho đoạn mô tả sau:
Bước 1: Khởi đầu tìm kiếm trên tất cả các phần tử của dãy
(left = 0 và right = n – 1)
Bước 2: Tính middle = (left + right)/2. So sánh a[middle] với x. Có 3 khả năng:
a[middle] = x thì thông báo Tìm thấy => Dừng
a[middle] > x thì right = middle – 1
a[middle] < x thì left = middle + 1
Bước 3:
Nếu left <= right và quay lại bước 2 để tìm kiếm tiếp
Ngược lại thông báo không tìm thấy và dừng thuật toán
a. Các đáp án đưa ra đều sai
b. Các đáp án trên đều đúng
c. Mô tả thuật toán tìm kiếm tuyến tính
d. Mô tả thuật toán tìm kiếm nhị phân
Câu 84: Cho hàm tìm kiếm tuyến tính trong mảng 1 chiều có n phần tử
int Search( int a[], int n, int x)
{
int i;
for(i=0; i<n; i++)
if(a[i] == x) return i;
return(-1);
}
Chọn phát biểu đúng nhất trong các phát biểu sau
a. Hàm luôn luôn trả về vị trí phần tử cuối cùng có giá trị bằng x
b. Hàm trả về vị trí phần tử cuối cùng có giá trị bằng x, ngược lại trả về n
c. Hàm trả về vị trí phần tử đầu tiên có giá trị bằng x, ngược lại trả về -1
d. Hàm trả về vị trí phần tử cuối cùng có giá trị bằng x, ngược lại trả về -1
Câu 85: Cho khai báo cấu trúc cây NPTK:
struct Node
{
int key;
Node *Left, *Right;
};
typedef Node *Tree;
và CTC insertNode(Tree &T, item x) để chèn thêm phần tử mới vào cây nhị phân tìm kiếm, nếu chèn thành công trả lại giá trị 0 nếu không chèn thành công trả lại giá trị -1
Đoạn mã nào sau đây để cho phép nhập liên tiếp các số nguyên đến khi bằng 0 thì dừng và tạo cây nhị phân tìm kiếm từ các số nguyên đã nhập đó.
a. int insertNode(Tree &T, int x){ if (T != NULL) { if (T->key == x) return -1; if (T->key > x)
return insertNode(T->Left, x); else if (T->key < x)
return insertNode(T->Right, x); } T = (Node *) malloc(sizeof(Node)); if (T == NULL) return 0; T->key = x; T->Left = T->Right = NULL; return 1;}
b. Node* searchKey(Tree T, int x) { if (T!=NULL) { if (T->key == x)
{ Node *P = T; return P;} if (T->key > x)
return searchKey(T->Left, x); if (T->key < x)
return searchKey(T->Right, x); } return NULL;}
c. void CreateTree(Tree &T)
{
int x;
while (1)
{
printf(“Nhap vao Node: “);
scanf(“%d”, &x);
if (x == 0) break;
int check = insertNode(T, x);
if (check == -1)
printf(“Node da ton tai!”);
else if (check == 0)
printf(“Khong du bo nho”);
}
}
d. void LNR(Tree T){ if(T!=NULL) { LNR(T->Left); printf(“%7d”,T->key); LNR(T->Right); }}
Câu 86: Cho khai báo cấu trúc cây NPTK:
struct Node
{
int key;
Node *Left, *Right;
};
typedef Node *Tree;
và CTC insertNode(Tree &T, item x) để chèn thêm phần tử mới vào cây nhị phân tìm kiếm, nếu chèn thành công trả lại giá trị 0 nếu không chèn thành công trả lại giá trị -1
Đoạn mã nào sau đây để cho phép nhập liên tiếp các số nguyên đến khi bằng 0 thì dừng và tạo cây nhị phân tìm kiếm từ các số nguyên đã nhập đó.
a. Node* searchKey(Tree T, int x) { if (T!=NULL) { if (T->key == x)
{ Node *P = T; return P;} if (T->key > x)
return searchKey(T->Left, x); if (T->key < x)
return searchKey(T->Right, x); } return NULL;}
b. void CreateTree(Tree &T)
{
int x;
while (1)
{
printf(“Nhap vao Node: “);
scanf(“%d”, &x);
if (x == 0) break;
int check = insertNode(T, x);
if (check == -1)
printf(“Node da ton tai!”);
else if (check == 0)
printf(“Khong du bo nho”);
}
}
c. void LNR(Tree T){ if(T!=NULL) { LNR(T->Left); printf(“%7d”,T->key); LNR(T->Right); }}
d. int insertNode(Tree &T, int x){ if (T != NULL) { if (T->key == x) return -1; if (T->key > x)
return insertNode(T->Left, x); else if (T->key < x)
return insertNode(T->Right, x); } T = (Node *) malloc(sizeof(Node)); if (T == NULL) return 0; T->key = x; T->Left = T->Right = NULL; return 1;}
Câu 87: Cho khai báo cấu trúc cây NPTK:
struct Node
{
int key;
Node *Left, *Right;
};
typedef Node *Tree;
và CTC insertNode(Tree &T, item x) để chèn thêm phần tử mới vào cây nhị phân tìm kiếm, nếu chèn thành công trả lại giá trị 0 nếu không chèn thành công trả lại giá trị -1
Đoạn mã nào sau đây để cho phép nhập liên tiếp các số nguyên đến khi bằng 0 thì dừng và tạo cây nhị phân tìm kiếm từ các số nguyên đã nhập đó.
a. void LNR(Tree T){ if(T!=NULL) { LNR(T->Left); printf(“%7d”,T->key); LNR(T->Right); }}
b. void CreateTree(Tree &T)
{
int x;
while (1)
{
printf(“Nhap vao Node: “);
scanf(“%d”, &x);
if (x == 0) break;
int check = insertNode(T, x);
if (check == -1)
printf(“Node da ton tai!”);
else if (check == 0)
printf(“Khong du bo nho”);
}
}
c. int insertNode(Tree &T, int x){ if (T != NULL) { if (T->key == x) return -1; if (T->key > x)
return insertNode(T->Left, x); else if (T->key < x)
return insertNode(T->Right, x); } T = (Node *) malloc(sizeof(Node)); if (T == NULL) return 0; T->key = x; T->Left = T->Right = NULL; return 1;}
d. Node* searchKey(Tree T, int x) { if (T!=NULL) { if (T->key == x)
{ Node *P = T; return P;} if (T->key > x)
return searchKey(T->Left, x); if (T->key < x)
return searchKey(T->Right, x); } return NULL;}
Câu 88: Cho khai báo cấu trúc đồ thị dạng ma trận trọng số như sau:
struct DoThi{ int n; float C[max][max];};
Cho biết đoạn chương trình con sau thực hiện gì?
void XuLy(DoThi G){ printf(“\n Ma tran trong so la:\n”); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) printf(“%8.1f”,G.C[i][j]); printf(“\n”); }}
a. In ma trận kề của đồ thị
b. In ma trận trọng số của đồ thị
c. In danh sách cạnh của đồ thị
d. In danh sách kề của đồ thị
Câu 89: Cho khai báo cấu trúc đồ thị dạng ma trận trọng số như sau:
struct DoThi{ int n; float C[max][max];};
Đâu là đoạn mã để in ma trận trọng số biểu diễn đồ thị
a. void XuLy(DoThi G, int k){ int i,j; printf(“\n Cac dinh ke cua %d la:”,k); for(i=1;i<=G.n;i++) if(G.C[k][i]>0) printf(“%7d”,i);}
b. void XuLy(DoThi G){ printf(“\n Ma tran trong so la:\n”); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) printf(“%8.1f”,G.C[i][j]); printf(“\n”); }}
c. void XuLy(DoThi &G){ int dd,dc; int i,j; float ts; printf(“Nhap so dinh do thi:”); scanf(“%d”,&G.n); for(i =1; i<=G.n; i++) for(j=1; j<=G.n; j++) G.C[i][j]=0;
}
d. void XuLy(DoThi G){ printf(“\n Ma tran trong so la:\n”); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) if (G.C[i][j]>0)
printf(“%8.1f”,G.C[i][j]); printf(“\n”); }}
Câu 90: Cho khai báo cấu trúc đồ thị dạng ma trận trọng số như sau:
struct DoThi{ int n; float C[max][max];};
Đâu là đoạn mã để liệt kê các đỉnh kề của một đỉnh k nào đó trong đồ thị
a. void XuLy(DoThi G){ printf(“\n Ma tran trong so la:\n”); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) if (G.C[i][j]>0)
printf(“%8.1f”,G.C[i][j]); printf(“\n”); }}
b. void XuLy(DoThi G, int k){ int i,j; printf(“\n Cac dinh ke cua %d la:”,k); for(i=1;i<=G.n;i++) if(G.C[k][i]>0) printf(“%7d”,i);}
c. void XuLy(DoThi G){ printf(“\n Ma tran trong so la:\n”); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) printf(“%8.1f”,G.C[i][j]); printf(“\n”); }}
d. void XuLy(DoThi &G){ int dd,dc; int i,j; float ts; printf(“Nhap so dinh do thi:”); scanf(“%d”,&G.n); for(i =1; i<=G.n; i++) for(j=1; j<=G.n; j++) G.C[i][j]=0;
}
Câu 91: Cho khai báo cấu trúc dữ liệu như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
Đoạn mã sau đây thực hiện yêu cầu gì?
Node *TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(strcmp(p->info.hoten,k)==0) break; return p;}
a. Thực hiện tìm kiếm trong DSLK đôi có chứa Cán bộ với tên là k nào đó hay không?
b. Thực hiện tìm kiếm trong DSLK đơn chứa các CanBo xem có CanBo nào có mã là k hay không? Trả lại thông tin nút chứa cán bộ nếu tìm thấy ngược lại trả lại giá trị NULL
c. Thực hiện tìm kiếm Cán bộ theo tên cán bộ
d. Thực hiện tìm kiếm trong DSLK kép chứa các CanBo xem có CanBo nào có tên là k hay không? Trả lại thông tin nút chứa cán bộ nếu tìm thấy ngược lại trả lại giá trị NULL
Câu 92: Cho khai báo cấu trúc:
struct NodeQueue
{
int info;
struct NodeQueue *next;
struct NodeQueue *pre;
};
struct Queue
{
NodeQueue *Rear, *Front;
}
Queue Q;
Đoạn mã sau đây thực hiện yêu cầu gì?
void initQueue(Queue &Q)
{
Q.Rear = NULL;
Q.Front = NULL;
}
a. Khởi tạo mảng rỗng
b. Khởi tạo Stack rỗng
c. Khởi tạo danh sách rỗng
d. Khởi tạo hàng đợi rỗng
Câu 93: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã tìm kiếm CanBo theo mã cán bộ trong DSLK đơn
a. void TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(p->mcb == k) break;}
b. Node *TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(strcmp(p->info.ns,k)==0) break; return p;}
c. Node *TimCBMa(List Q,int k){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(p->info.mcb == k) break;
return p;}
d. Node *TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(strcmp(p->info.hoten,k)==0) break; return p;}
Câu 94: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để in ra màn hình thông tin đầy đủ của các Cán Bộ có trong danh sách liên kết lần lượt từ cuối trở về đầu
a. void InDSCanBo (DList Q)
{
Node *p;
for(p=Q.Tail; p!=NULL; p=p->pre)
{
System.out.print(“%5d”, p->info.mcb);
System.out.print(“%15s”, p->info.hoten);
System.out.print(“%10s”, p->info.ns);
System.out.print(“%7.1f”, p->info.hsl);
System.out.print(“%7.0f”, p->info.pc);
}
}
b. void InDSCanBo (DList Q)
{
Node *p;
for(p=Q.Head; p!=NULL; p=p->next)
{
System.out.print(“%5d”, p->info.mcb);
System.out.print(“%15s”, p->info.hoten);
System.out.print(“%10s”, p->info.ns);
System.out.print(“%7.1f”, p->info.hsl);
System.out.print(“%7.0f”, p->info.pc);
}
}
c. void InDSCanBo (DList Q)
{
Node *p= Q.Head;
While( p!=NULL)
{
System.out.print(“%5d”, p->info.mcb);
System.out.print(“%15s”, p->info.hoten);
System.out.print(“%10s”, p->info.ns);
System.out.print(“%7.1f”, p->info.hsl);
System.out.print(“%7.0f”, p->info.pc);
}
}
d. void InDSCanBo (DList Q)
{
Node *p= Q.Tail;
While( p!=NULL)
{
System.out.print(“%5d”, p->info.mcb);
System.out.print(“%15s”, p->info.hoten);
System.out.print(“%10s”, p->info.ns);
System.out.print(“%7.1f”, p->info.hsl);
System.out.print(“%7.0f”, p->info.pc);
}
}
Câu 95: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để sắp xếp danh sách Cán bộ theo thứ tự giảm dần của hệ số lương (hsl);
a. void SXCBThanhTien(List &Q)
{ Node *p=Q.Head,*q; CB tg; while(p!=NULL)
{
q=p->next; while(q!=NULL) if(p->info.pc > q->info.pc) { tg = p->info; p->info = q->info; q->info = tg; }
}
}
b. void SXCBThanhTien(List &Q)
{ Node *p,*q; CB tg; for(p=Q.Head; p!=NULL; p=p->next) for(q=p->next; q!=NULL; q=q->next) if(p->info.hsl > q->info.hsl) { tg = p->info; p->info = q->info; q->info = tg; }
}
c. void SXCBThanhTien(List &Q)
{ Node *p,*q; CB tg; for(p=Q.Head; p!=NULL; p=p->next) for(q=p->next; q!=NULL; q=q->next) if(p->info.hsl < q->info.hsl) { tg = p->info; p->info = q->info; q->info = tg; }
}
d. void SXCBThanhTien(List &Q)
{ Node *p,*q; CB tg; for(p=Q.Head; p!=NULL; p=p->next) for(q=p->next; q!=NULL; q=q->next) if(p->info.pc < q->info.pc) { tg = p->info; p->info = q->info; q->info = tg; }
}
Câu 96: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để sắp xếp danh sách Cán bộ theo thứ tự tăng dần của hệ số lương (hsl);
a. void SXCBThanhTien(List &Q)
{ Node *p,*q; CB tg; for(p=Q.Head; p!=NULL; p=p->next) for(q=p->next; q!=NULL; q=q->next) if(p->info.hsl < q->info.hsl) { tg = p->info; p->info = q->info; q->info = tg; }
}
b. void SXCBThanhTien(List &Q)
{ Node *p,*q; CB tg; for(p=Q.Head; p!=NULL; p=p->next) for(q=p->next; q!=NULL; q=q->next) if(p->info.pc < q->info.pc) { tg = p->info; p->info = q->info; q->info = tg; }
}
c. void SXCBThanhTien(List &Q)
{ Node *p=Q.Head,*q; CB tg; while(p!=NULL)
{
q=p->next; while(q!=NULL) if(p->info.pc > q->info.pc) { tg = p->info; p->info = q->info; q->info = tg; }
}
}
d. void SXCBThanhTien(List &Q)
{ Node *p,*q; CB tg; for(p=Q.Head; p!=NULL; p=p->next) for(q=p->next; q!=NULL; q=q->next) if(p->info.hsl > q->info.hsl) { tg = p->info; p->info = q->info; q->info = tg; }
}
Câu 97: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để tính tổng phụ cấp của tất cả các cán bộ và in ra màn hình?
a. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
printf(“%10.0f”, p->info.pc)
}
b. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
}
c. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.hsl;
printf(“\n Tong phu cap:%f”, s);
}
d. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
printf(“\n Tong phu cap:%f”, s);
}
Câu 98: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để tính tổng phụ cấp của tất cả các cán bộ và in ra màn hình?
a. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
printf(“%10.0f”, p->info.pc)
}
b. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
printf(“\n Tong phu cap:%f”, s);
}
c. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
}
d. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.hsl;
printf(“\n Tong phu cap:%f”, s);
}
Câu 99: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để tính tổng phụ cấp của tất cả các cán bộ và in ra màn hình?
a. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
}
b. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.hsl;
printf(“\n Tong phu cap:%f”, s);
}
c. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
printf(“%10.0f”, p->info.pc)
}
d. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
printf(“\n Tong phu cap:%f”, s);
}
Câu 100: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để tính tổng phụ cấp của tất cả các cán bộ và in ra màn hình?
a. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
}
b. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.hsl;
printf(“\n Tong phu cap:%f”, s);
}
c. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
printf(“%10.0f”, p->info.pc)
}
d. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
printf(“\n Tong phu cap:%f”, s);
}
Câu 101: Cho khai báo CTDL như sau:
struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next;};
struct List{ Node *head, *tail;};
Đâu là đoạn mã để tính tổng phụ cấp của tất cả các cán bộ và in ra màn hình?
a. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
}
b. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.pc;
printf(“\n Tong phu cap:%f”, s);
}
c. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.hsl;
printf(“\n Tong phu cap:%f”, s);
}
d. void TinhPC (List Q)
{
Node *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
printf(“%10.0f”, p->info.pc)
}
Câu 102: Cho khai báo Stack như sau:
struct Stack
{
char color[15];
int nut[max];
};
Cho biết kết quả giá trị được in ra màn hình là gì?
Push(s, “Red”);
Push(s, “Green”);
Push(s, “Blue”);
printf(“\n%15s”, Pop(s));
printf(“\n%15s”, Pop(s));
a. Green
Blue
b. Red
Blue
c. Blue
Green
d. Red
Green
Câu 103: Cho khai báo Stack như sau:
struct Stack
{
char color[15];
int nut[max];
};
Cho biết kết quả giá trị được in ra màn hình là gì?
Push(s, “Red”);
Push(s, “Green”);
Push(s, “Blue”);
printf(“\n%15s”, Pop(s));
printf(“\n%15s”, Pop(s));
a. Red
Green
b. Blue
Green
c. Red
Blue
d. Green
Blue
Câu 104: Cho khai báo Stack như sau:
struct Stack
{
int top
int nut[max];
};
Cho biết phần tử được lấy ra cuối cùng trong Stack sau là bảo nhiêu?
int a[] = {4, 5, 6, 7, 8};
int n = 5;
Stack s;
for(int i = 0; i<n; i++)
push(s, a[i]);
a. 5
b. 4
c. 7
d. 8
Câu 105: Cho khai báo Stack như sau:
struct Stack
{
int top
int nut[max];
};
Cho biết phần tử được lấy ra cuối cùng trong Stack sau là bảo nhiêu?
int a[] = {4, 5, 6, 7, 8};
int n = 5;
Stack s;
for(int i = 0; i<n; i++)
push(s, a[i]);
a. 5
b. 4
c. 8
d. 7
Câu 106: Cho khai báo Stack như sau:
struct Stack
{
int top
int nut[max];
};
Đoạn mã thực hiện thao tác gì?
int Top(Stack &s)
{
int tg;
if ( isEmpty(s) == 1 )
{
printf(“Ngan xep rong”);
exit(1);
}
else
{
tg = s.nut[s.top];
}
return tg;
}
a. Duyệt qua lần lượt từng phần tử trong Stack và in thông tin lần lượt ở đỉnh ra
b. Bổ sung thêm phần tử mới vào đỉnh của Stack
c. Trả lại giá trị của phần tử đỉnh hiện tại của Stack
d. Thực hiện tính tổng các phần tử đang có trong Staclk
Câu 107: Cho khai báo Stack như sau:
struct Stack
{
int top
int nut[max];
};
Đoạn mã thực hiện thao tác gì?
int Top(Stack &s)
{
int tg;
if ( isEmpty(s) == 1 )
{
printf(“Ngan xep rong”);
exit(1);
}
else
{
tg = s.nut[s.top];
}
return tg;
}
a. Trả lại giá trị của phần tử đỉnh hiện tại của Stack
b. Thực hiện tính tổng các phần tử đang có trong Staclk
c. Bổ sung thêm phần tử mới vào đỉnh của Stack
d. Duyệt qua lần lượt từng phần tử trong Stack và in thông tin lần lượt ở đỉnh ra
Câu 108: Cho khai báo Stack như sau:
struct Stack
{
int top
int nut[max];
};
Đoạn mã thực hiện thao tác gì?
void Push( Stack &s, int x)
{
if ( isFull(s) == 1)
{
printf(“Stack day”);
exit(1);
}
else
{
s.top = s.top + 1;
s.nut[ s.top ] = x;
}
}
a. Chèn thêm phần tử mới vào đỉnh của Stack
b. Trả lại giá trị phần tử đỉnh của Stack
c. Thực hiện in lần lượt các phần tử đang có trong Stack
d. Thự chiện xoá phần tử đang có ở đỉnh của Stack
Câu 109: Cho khai báo Stack như sau:
struct Stack
{
int top
int nut[max];
};
Đoạn mã thực hiện thao tác gì?
void Push( Stack &s, int x)
{
if ( isFull(s) == 1)
{
printf(“Stack day”);
exit(1);
}
else
{
s.top = s.top + 1;
s.nut[ s.top ] = x;
}
}
a. Thự chiện xoá phần tử đang có ở đỉnh của Stack
b. Trả lại giá trị phần tử đỉnh của Stack
c. Chèn thêm phần tử mới vào đỉnh của Stack
d. Thực hiện in lần lượt các phần tử đang có trong Stack
Câu 110: Cho khai báo Stack như sau:
struct Stack
{
int top
int nut[max];
};
Đoạn mã thực hiện thao tác gì?
void Push( Stack &s, int x)
{
if ( isFull(s) == 1)
{
printf(“Stack day”);
exit(1);
}
else
{
s.top = s.top + 1;
s.nut[ s.top ] = x;
}
}
a. Trả lại giá trị phần tử đỉnh của Stack
b. Chèn thêm phần tử mới vào đỉnh của Stack
c. Thự chiện xoá phần tử đang có ở đỉnh của Stack
d. Thực hiện in lần lượt các phần tử đang có trong Stack
Câu 111: Cho mảng a có N (N>=2) phần từ, x là một biến, xét đoạn mã sau cho biết đoạn mã biểu diễn thuật toán gì?
Bước 1: Khởi gán i = 0, s = 0, qua bước 2;
Bước 2: Nếu a[i] == x thì
s++; qua bước 3
Bước 3: i = i + 1;
Nếu i == n: hết mảng. Dừng, in s ra màn hình
Ngược lại: Lặp lại bước 2
a. Đếm số phần tử có giá trị bằng phần tử đầu tiên trong mảng
b. Đếm số phần tử có giá trị bằng x trong mảng
c. Đếm số phần tử trong mảng đầu tiên trong mảng
d. Tìm kiếm tuyến tính phần tử mang giá trị x trong mảng
Câu 112: Cho mảng a có N (N>=2) phần từ, x là một biến, xét đoạn mã sau cho biết đoạn mã biểu diễn thuật toán gì?
Bước 1: Khởi gán i = 0, s = 0, qua bước 2;
Bước 2: Nếu a[i] == x thì
s++; qua bước 3
Bước 3: i = i + 1;
Nếu i == n: hết mảng. Dừng, in s ra màn hình
Ngược lại: Lặp lại bước 2
a. Đếm số phần tử có giá trị bằng x trong mảng
b. Đếm số phần tử trong mảng đầu tiên trong mảng
c. Đếm số phần tử có giá trị bằng phần tử đầu tiên trong mảng
d. Tìm kiếm tuyến tính phần tử mang giá trị x trong mảng
Câu 113: Cho mảng a gồm các phẩn tử có giá trị như sau:
1356
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 4
b. 7
c. 6
d. 5
Câu 114: Cho mảng a gồm các phẩn tử có giá trị như sau:
1356
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 5
b. 6
c. 4
d. 7
Câu 115: Cho mảng a gồm các phẩn tử có giá trị như sau:
1356
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 6
b. 7
c. 4
d. 5
Câu 116: Cho mảng a gồm các phẩn tử có giá trị như sau:
1356
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 7
b. 5
c. 4
d. 6
Câu 117: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán đổi chỗ trực tiếp (Bubble Sort) để sắp xếp mảng giảm dần là:
a. 3
b. 2
c. 4
d. 5
Câu 118: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán đổi chỗ trực tiếp (Bubble Sort) để sắp xếp mảng giảm dần là:
a. 4
b. 3
c. 2
d. 5
Câu 119: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán đổi chỗ trực tiếp (Interchange Sort) để sắp xếp mảng tăng dần là:
a. 3
b. 4
c. 5
d. 2
Câu 120: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 2
b. 3
c. 4
d. 5
Câu 121: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 2
b. 3
c. 4
d. 5
Câu 122: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 2
b. 4
c. 5
d. 3
Câu 123: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 3
b. 2
c. 5
d. 4
Câu 124: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 3
b. 4
c. 2
d. 5
Câu 125: Cho mảng a gồm các phẩn tử có giá trị như sau:
3126
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán nổi bọt để sắp xếp mảng giảm dần là:
a. 5
b. 2
c. 4
d. 3
Câu 126: Cho mảng a gồm các phẩn tử có giá trị như sau:
74326
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán chọn trực tiếp để sắp xếp mảng tăng dần là:
a. 2
b. 4
c. 5
d. 3
Câu 127: Cho mảng a gồm các phẩn tử có giá trị như sau:
74326
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán chọn trực tiếp để sắp xếp mảng tăng dần là:
a. 3
b. 4
c. 5
d. 2
Câu 128: Cho mảng a gồm các phẩn tử có giá trị như sau:
74326
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán chọn trực tiếp để sắp xếp mảng tăng dần là:
a. 4
b. 5
c. 3
d. 2
Câu 129: Cho mảng a gồm các phẩn tử có giá trị như sau:
74326
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán chọn trực tiếp để sắp xếp mảng tăng dần là:
a. 5
b. 2
c. 3
d. 4
Câu 130: Cho mảng a gồm các phẩn tử có giá trị như sau:
74326
Số lần hoán vị 2 phần tử khác nhau khi áp dụng thuật toán chọn trực tiếp để sắp xếp mảng tăng dần là:
a. 5
b. 3
c. 2
d. 4
Câu 131: Cho mảng a gồm các phần tử: 8, 3, 7, 6, 4, 2.
Cho biết kết quả ở bước thứ 3 khi áp dụng thuật toán sắp xếp Selection tăng dần trên mảng các phần tử trên.
a. 2 3 7 6 8 4
b. 2 3 4 6 8 7
c. 2 3 4 6 7 8
d. 2 3 7 6 4 8
Câu 132: Cho mảng a gồm các phần tử: 8, 3, 7, 6, 4,2.
Cho biết kết quả ở bước thứ 3 khi áp dụng thuật toán sắp xếp Insertion tăng dần trên mảng các phần tử trên.
a. 2 3 4 6 7 8
b. 3 8 7 6 4 2
c. 3 6 7 8 4 2
d. 3 4 6 7 8 2
Câu 133: Cho mảng a gồm các phần tử: 8, 3, 7, 6, 4,2.
Cho biết kết quả ở bước thứ 3 khi áp dụng thuật toán sắp xếp Insertion tăng dần trên mảng các phần tử trên.
a. 3 4 6 7 8 2
b. 3 6 7 8 4 2
c. 2 3 4 6 7 8
d. 3 8 7 6 4 2
Câu 134: Cho mảng a gồm các phần tử: 8, 3, 7, 6, 4,2.
Cho biết kết quả ở bước thứ 3 khi áp dụng thuật toán sắp xếp Insertion tăng dần trên mảng các phần tử trên.
a. 3 8 7 6 4 2
b. 3 6 7 8 4 2
c. 2 3 4 6 7 8
d. 3 4 6 7 8 2
Câu 135: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=3553, du, b=8;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 0
b. 3553
c. 6741
d. 1476
Câu 136: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=3553, du, b=8;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 3553
b. 0
c. 1476
d. 6741
Câu 137: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=3553, du, b=8;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 3553
b. 1476
c. 0
d. 6741
Câu 138: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=3553, du, b=8;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 3553
b. 1476
c. 0
d. 6741
Câu 139: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=53, du, b=2;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 00211
b. 102021
c. 110202
d. 11100
Câu 140: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=53, du, b=2;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 102021
b. 110202
c. 00211
d. 11100
Câu 141: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=53, du, b=2;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 11100
b. 00211
c. 102021
d. 110202
Câu 142: Cho s là Stack chứa các giá trị nguyên, Kết quả của đoạn mã sau là gì?
void main()
{
int n=53, du, b=2;
stack *s;
InitStack(s);
while(n!=0)
{
du = n%b;
Push(s, du);
n = n/b;
}
cout<<“Ket qua la:”;
while( !isEmpty(s))
{
cout<<Pop(s);
}
}
a. 11100
b. 00211
c. 110202
d. 102021
Câu 143: Cho thông tin của Hang Hoa gồm: mã hàng, tên hàng, số lượng và đơn giá.
Đâu là đoạn mã khai báo Cấu trúc dữ liệu dạng danh sách liên kết kép để lưu trữ danh sách Hang Hoa
a. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
b. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH x;
c. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH ds[10];
d. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next;};
struct List{ Node *head, *tail;};
Câu 144: Cho thông tin của Hang Hoa gồm: mã hàng, tên hàng, số lượng và đơn giá.
Đâu là đoạn mã khai báo Cấu trúc dữ liệu dạng danh sách liên kết kép để lưu trữ danh sách Hang Hoa
a. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
b. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next;};
struct List{ Node *head, *tail;};
c. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH x;
d. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH ds[10];
Câu 145: Cho thông tin của Hang Hoa gồm: mã hàng, tên hàng, số lượng và đơn giá.
Đâu là đoạn mã khai báo Cấu trúc dữ liệu dạng danh sách liên kết kép để lưu trữ danh sách Hang Hoa
a. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next;};
struct List{ Node *head, *tail;};
b. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
c. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH ds[10];
d. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH x;
Câu 146: Cho thông tin của Hang Hoa gồm: mã hàng, tên hàng, số lượng và đơn giá.
Đâu là đoạn mã khai báo Cấu trúc dữ liệu dạng danh sách liên kết kép để lưu trữ danh sách Hang Hoa
a. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next;};
struct List{ Node *head, *tail;};
b. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
c. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH x;
d. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH ds[10];
Câu 147: Cho thông tin của SV gồm: MaSV, HoTen, Tuoi, DTB
Đâu là đoạn mã để Sắp xếp danh sách SV theo ĐTB giảm dần bằng thuật toán Selection Sort
a. void SXDSSV( int n, SV ds[]){ int max, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { max = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB > ds[max].DTB ) max = j; if(max!= i )
{ tg = ds[max];
ds[max] = ds[i];
ds[i] = tg; } }}
b. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB<x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
c. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB>x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
d. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
Câu 148: Cho thông tin của SV gồm: MaSV, HoTen, Tuoi, DTB
Đâu là đoạn mã để Sắp xếp danh sách SV theo ĐTB giảm dần bằng thuật toán Selection Sort
a. void SXDSSV( int n, SV ds[]){ int max, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { max = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB > ds[max].DTB ) max = j; if(max!= i )
{ tg = ds[max];
ds[max] = ds[i];
ds[i] = tg; } }}
b. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB>x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
c. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
d. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB<x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
Câu 149: Cho thông tin của SV gồm: MaSV, HoTen, Tuoi, DTB
Đâu là đoạn mã để Sắp xếp danh sách SV theo ĐTB tăng dần bằng thuật toán Selection Sort
a. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB > ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
b. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB<x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
c. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
d. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB>x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
Câu 150: Cho thông tin của SV gồm: MaSV, HoTen, Tuoi, DTB
Đâu là đoạn mã để Sắp xếp danh sách SV theo ĐTB tăng dần bằng thuật toán Selection Sort
a. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB>x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
b. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
c. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB > ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
d. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].DTB<x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
Câu 151: Cho thông tin của SV gồm: MaSV, HoTen, Tuoi, DTB
Đâu là đoạn mã để Sắp xếp danh sách SV theo Tuổi tăng dần bằng thuật toán Selection Sort
a. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].Tuoi < ds[min].Tuoi ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
b. void SXDSSV( int n, SV ds[]){ int max, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { max = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].Tuoi > ds[max].Tuoi) max = j; if(max!= i )
{ tg = ds[max];
ds[max] = ds[i];
ds[i] = tg; } }}
c. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].Tuoi<x.Tuoi)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
d. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].Tuoi>x.Tuoi)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
Câu 152: Cho thông tin của SV gồm: MaSV, HoTen, Tuoi, DTB
Đâu là đoạn mã để Sắp xếp danh sách SV theo Tuổi tăng dần bằng thuật toán Selection Sort
a. void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].Tuoi < ds[min].Tuoi ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
b. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].Tuoi>x.Tuoi)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
c. void SXDSSV( int n, SV ds[]){ int max, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { max = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].Tuoi > ds[max].Tuoi) max = j; if(max!= i )
{ tg = ds[max];
ds[max] = ds[i];
ds[i] = tg; } }}
d. void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].Tuoi<x.Tuoi)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
Câu 153: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 154: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 155: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 156: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 157: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 158: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 159: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 160: Cho thuật toán sắp xếp Bubble Sort như sau:
void BubbleSort( int M[], int N)
{
for( int i = 0; i< N-1; i++)
for( int j = N-1; j>I; j–)
if( M[j] <M[j-1]) Swap( M[j], M[j-1]);
return ;
}
Chọn câu
Câu 161: Cho thuật toán sau:
int LinearSearch( float M[], int N, float X)
{
int k = 0;
M[N] = X;
while (M[k] !=X)//n+1
k++;
if (k<N) return k;
return -1;
}
Chọn câu
Câu 162: Cho thuật toán tìm nhị phân không đệ quy sau:
int NrecBinarySearch( int M[], int N, int X)
{
int First = 0;
int Last = N -1;
while ( First <= Last)
{
int Mid = (First + Last)/2;
if ( X == M[Mid]) return Mid;
if ( X < M[Mid]) Last = Mid – 1;
else First = Mid + 1;
}
return -1;
}
Chọn câu
Câu 163: Cho thuật toán tìm nhị phân không đệ quy sau:
int NrecBinarySearch( int M[], int N, int X)
{
int First = 0;
int Last = N -1;
while ( First <= Last)
{
int Mid = (First + Last)/2;
if ( X == M[Mid]) return Mid;
if ( X < M[Mid]) Last = Mid – 1;
else First = Mid + 1;
}
return -1;
}
Chọn câu
Câu 164: Cho thuật toán tìm nhị phân không đệ quy sau:
int NrecBinarySearch( int M[], int N, int X)
{
int First = 0;
int Last = N -1;
while ( First <= Last)
{
int Mid = (First + Last)/2;
if ( X == M[Mid]) return Mid;
if ( X < M[Mid]) Last = Mid – 1;
else First = Mid + 1;
}
return -1;
}
Chọn câu
Câu 165: Cho thuật toán tìm nhị phân không đệ quy sau:
int NrecBinarySearch( int M[], int N, int X)
{
int First = 0;
int Last = N -1;
while ( First <= Last)
{
int Mid = (First + Last)/2;
if ( X == M[Mid]) return Mid;
if ( X < M[Mid]) Last = Mid – 1;
else First = Mid + 1;
}
return -1;
}
Chọn câu
Câu 166: Danh sách liên kết là gì?
a. là tập hợp các phần tử liên kết móc nối liên tiếp với nhau, có kiểu truy cập tuần tự. Mỗi phần tử là một nút.
b. là tập hợp các phần tử liên kết móc nối liên tiếp với nhau, có kiểu truy cập ngẫu nhiên. Mỗi phần tử là một nút.
c. Cả hai phát biểu đều sai
d. Cả hai phát biểu đều đúng
Câu 167: Đâu là công thức tổng quát để tính giai thừa dựa vào giải thuật đệ quy
a. GiaithuaKhông = (n-1)* GiaithuaKhông
b. GiaithuaKhông = n* Giaithua(n-1)
c. GiaithuaKhông = n* Giaithua(n+1)
d. GiaithuaKhông = n* GiaithuaKhông
Câu 168: Đâu là công thức tổng quát để tính giai thừa dựa vào giải thuật đệ quy
a. GiaithuaKhông = n* Giaithua(n+1)
b. GiaithuaKhông = n* GiaithuaKhông
c. GiaithuaKhông = (n-1)* GiaithuaKhông
d. GiaithuaKhông = n* Giaithua(n-1)
Câu 169: Đâu là công thức tổng quát để tính giai thừa dựa vào giải thuật đệ quy
a. GiaithuaKhông = n* Giaithua(n-1)
b. GiaithuaKhông = (n-1)* GiaithuaKhông
c. GiaithuaKhông = n* GiaithuaKhông
d. GiaithuaKhông = n* Giaithua(n+1)
Câu 170: Đâu là công thức tổng quát để tính giai thừa dựa vào giải thuật đệ quy
a. GiaithuaKhông = n* GiaithuaKhông
b. GiaithuaKhông = (n-1)* GiaithuaKhông
c. GiaithuaKhông = n* Giaithua(n+1)
d. GiaithuaKhông = n* Giaithua(n-1)
Câu 171: Đâu là định nghĩa của Hàng đợi
a. một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
b. Cả hai đáp án đều đúng
c. Cả hai đáp án đều sai
d. dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
Câu 172: Đâu là định nghĩa của Hàng đợi
a. một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
b. Cả hai đáp án đều đúng
c. dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
d. Cả hai đáp án đều sai
Câu 173: Đâu là định nghĩa của Hàng đợi
a. một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
b. Cả hai đáp án đều sai
c. dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
d. Cả hai đáp án đều đúng
Câu 174: Đâu là định nghĩa của Ngăn xếp
a. Cả hai đáp án đều đúng
b. Cả hai đáp án đều sai
c. Dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
d. Một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
Câu 175: Đâu là định nghĩa của Ngăn xếp
a. Cả hai đáp án đều đúng
b. Cả hai đáp án đều sai
c. Một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
d. Dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
Câu 176: Đâu là định nghĩa của Ngăn xếp
a. Cả hai đáp án đều sai
b. Dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
c. Một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
d. Cả hai đáp án đều đúng
Câu 177: Đâu là định nghĩa của Ngăn xếp
a. Dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
b. Một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
c. Cả hai đáp án đều sai
d. Cả hai đáp án đều đúng
Câu 178: Đâu là định nghĩa của Ngăn xếp
a. Một kiểu danh sách trong đó được trang bị hai phép toán bổ sung một phần tử vào cuối danh sách và loại bỏ một phần tử ở đầu danh sách
b. Cả hai đáp án đều đúng
c. Dạng danh sách đặc biệt trong đó các phép toán thêm vào một phần tử mới hoặc loại bỏ một phần tử trong danh sách chỉ được phép thực hiện ở một đầu của danh sách
d. Cả hai đáp án đều sai
Câu 179: Đây là định nghĩa của độ phức nào? “Được tính là tổng số chi phí về mặt không gian (bộ nhớ) cần thiết sử dụng cho thuật toán”
a. Cả hai lựa chọn đều đúng
b. Không gian
c. Cả hai lựa chọn đều sai
d. Thời gian
Câu 180: Đây là định nghĩa của độ phức nào? “Được tính là tổng số chi phí về mặt không gian (bộ nhớ) cần thiết sử dụng cho thuật toán”
a. Không gian
b. Cả hai lựa chọn đều sai
c. Cả hai lựa chọn đều đúng
d. Thời gian
Câu 181: Đây là định nghĩa của độ phức nào? “Được tính là tổng số chi phí về mặt không gian (bộ nhớ) cần thiết sử dụng cho thuật toán”
a. Không gian
b. Cả hai lựa chọn đều sai
c. Cả hai lựa chọn đều đúng
d. Thời gian
Câu 182: Đây là định nghĩa của độ phức nào? “được tính là tổng số chi phí về mặt tổng thời gian cần thiết để hoàn thành thuật toán, được đánh giá dựa vào số lượng các thao tác được sử dụng trong thuật toán dựa trên bộ dữ liệu đầu vào
”
a. Cả hai lựa chọn đều đúng
b. Thời gian
c. Không gian
d. Cả hai lựa chọn đều sai
Câu 183: Đây là định nghĩa của độ phức nào? “được tính là tổng số chi phí về mặt tổng thời gian cần thiết để hoàn thành thuật toán, được đánh giá dựa vào số lượng các thao tác được sử dụng trong thuật toán dựa trên bộ dữ liệu đầu vào
”
a. Không gian
b. Cả hai lựa chọn đều sai
c. Thời gian
d. Cả hai lựa chọn đều đúng
Câu 184: Đây là định nghĩa của độ phức nào? “được tính là tổng số chi phí về mặt tổng thời gian cần thiết để hoàn thành thuật toán, được đánh giá dựa vào số lượng các thao tác được sử dụng trong thuật toán dựa trên bộ dữ liệu đầu vào
”
a. Không gian
b. Thời gian
c. Cả hai lựa chọn đều sai
d. Cả hai lựa chọn đều đúng
Câu 185: Để sắp xếp các phần tử của danh sách liên kết có mấy phương án sử dụng:
a. 4 phương án
b. 5 phương án
c. 2 phương án
d. 3 phương án
Câu 186: Để sắp xếp các phần tử của danh sách liên kết có mấy phương án sử dụng:
a. 5 phương án
b. 2 phương án
c. 3 phương án
d. 4 phương án
Câu 187: Để sắp xếp các phần tử của danh sách liên kết đôi sử dụng phương án nào?
a. Cả hai phương án trên đều đúng
b. Thay đổi mối liên kết của phần tử
c. Hoán vị nội dung của phần tử
d. Cả hai phương án trên đều sai
Câu 188: Để sắp xếp các phần tử của danh sách liên kết đơn sử dụng phương án nào?
a. Hoán vị nội dung của phần tử
b. Tất cả các đáp án đều sai
c. Thay đổi mối liên kết của phần tử
d. Cả hai phương án trên đều đúng
Câu 189: Để sử dụng hàm cấp phát bộ nhớ malloc(), calloc(), new(). Ta phải sử dụng thư viện nào?
a. stdio.h
b. conio.h
c. string.h
d. stdlib.h
Câu 190: Để sử dụng hàm cấp phát bộ nhớ malloc(), calloc(), new(). Ta phải sử dụng thư viện nào?
a. stdlib.h
b. string.h
c. stdio.h
d. conio.h
Câu 191: Để sử dụng hàm cấp phát bộ nhớ malloc(), calloc(), new(). Ta phải sử dụng thư viện nào?
a. string.h
b. conio.h
c. stdlib.h
d. stdio.h
Câu 192: Để tiến hành tìm kiếm một phần tử trong danh sách liên kết đôi sử dụng phương pháp tìm kiếm gì?
a. Tìm kiếm tuyến tính và tìm kiếm nhị phân
b. Cả ba phát biểu đều đúng
c. Tìm kiếm nhị phân
d. Tìm kiếm tuyến tính
Câu 193: Để tiến hành tìm kiếm một phần tử trong danh sách liên kết đôi sử dụng phương pháp tìm kiếm gì?
a. Tìm kiếm tuyến tính và tìm kiếm nhị phân
b. Tìm kiếm nhị phân
c. Tìm kiếm tuyến tính
d. Cả ba phát biểu đều đúng
Câu 194: Để tiến hành tìm kiếm một phần tử trong danh sách liên kết đôi sử dụng phương pháp tìm kiếm gì?
a. Tìm kiếm tuyến tính và tìm kiếm nhị phân
b. Tìm kiếm tuyến tính
c. Tìm kiếm nhị phân
d. Cả ba phát biểu đều đúng
Câu 195: Để tiến hành tìm kiếm một phần tử trong danh sách liên kết đơn sử dụng phương pháp tìm kiếm gì?
a. Tất cả các đáp án đều đúng
b. Tìm kiếm tuyến tính và tìm kiếm nhị phân
c. Tìm kiếm nhị phân
d. Tìm kiếm tuyến tính
Câu 196: Để tiến hành tìm kiếm một phần tử trong danh sách liên kết đơn sử dụng phương pháp tìm kiếm gì?
a. Tất cả các đáp án đều đúng
b. Tìm kiếm tuyến tính
c. Tìm kiếm tuyến tính và tìm kiếm nhị phân
d. Tìm kiếm nhị phân
Câu 197: Để tiến hành tìm kiếm một phần tử trong danh sách liên kết đơn sử dụng phương pháp tìm kiếm gì?
a. Tìm kiếm tuyến tính và tìm kiếm nhị phân
b. Tất cả các đáp án đều đúng
c. Tìm kiếm nhị phân
d. Tìm kiếm tuyến tính
Câu 198: Để tính biểu thức s = ½ + ¼ + … + 1/(2n) với n>=1 ta chọn hàm
a. float F( int n )
{
if (n ==1 )
return 1.0/2;
else
return 1.0/n + F(n-1);
}
b. float F( int n )
{
if (n ==1 )
return 1.0/2;
else
return 1.0/(2*n) + F1(n-1);
}
c. float F( int n )
{
if (n ==1 )
return 1.0/2;
else
return 1.0/(2*n) + F(n-1);
}
d. float F( int n )
{
if (n ==1 )
return 1.0/2;
else
return 1.0/2*n + F(n-1);
}
Câu 199: Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm
a. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/(n+1) + F (n-1);
}
b. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/(n+1) + F(n-1);
}
c. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)(n+1)/(n+1) + F(n-1);
}
d. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/ ( n) + F(n-1);
}
Câu 200: Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm
a. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/(n+1) + F(n-1);
}
b. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/ ( n) + F(n-1);
}
c. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/(n+1) + F (n-1);
}
d. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)(n+1)/(n+1) + F(n-1);
}
Câu 201: Để tính biểu thức s = xn với n>=0 ta chọn hàm
a. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*F(x,n);
}
b. long F(int x, int n)
{
if (n==1)
return 1;
else
return x*F(x,n-1);
}
c. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*F(x,n-1);
}
d. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*x*F(x,n-1);
}
Câu 202: Để tính biểu thức s = xn với n>=0 ta chọn hàm
a. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*F(x,n-1);
}
b. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*F(x,n);
}
c. long F(int x, int n)
{
if (n==1)
return 1;
else
return x*F(x,n-1);
}
d. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*x*F(x,n-1);
}
Câu 203: Để tính biểu thức s = xn với n>=0 ta chọn hàm
a. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*F(x,n-1);
}
b. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*F(x,n);
}
c. long F(int x, int n)
{
if (n==1)
return 1;
else
return x*F(x,n-1);
}
d. long F(int x, int n)
{
if (n==0)
return 1;
else
return x*x*F(x,n-1);
}
Câu 204: Để xác định giải thuật đệ quy cần xác định gì?
a. Công thức tổng quát
b. Cả hai lựa chọn đều đúng
c. Phần tử neo
d. Cả hai lựa chọn đều sai
Câu 205: Để xác định giải thuật đệ quy cần xác định gì?
a. Phần tử neo
b. Cả hai lựa chọn đều sai
c. Công thức tổng quát
d. Cả hai lựa chọn đều đúng
Câu 206: Định nghĩa cấu trúc dữ liệu của danh sách liên kết đôi được mô tả như sau:
struct Node
{
int Key;
struct Node *next;
struct Node *pre;
};
Trong đó, khai báo Node *next dùng để mô tả
a. Con trỏ trở tới phần dữ liệu cuối của danh sách
b. Con trỏ trở tới phần dữ liệu
c. Vùng liên kết quản lý địa chỉ phần tử kế tiếp của phần tử cuối
d. Vùng liên kết quản lý địa chỉ phần tử kế tiếp
Câu 207: Định nghĩa cấu trúc dữ liệu của danh sách liên kết đôi được mô tả như sau:
struct Node
{
int Key;
struct Node *next;
struct Node *pre;
};
Trong đó, khai báo Node *next dùng để mô tả
a. Con trỏ trở tới phần dữ liệu cuối của danh sách
b. Vùng liên kết quản lý địa chỉ phần tử kế tiếp của phần tử cuối
c. Vùng liên kết quản lý địa chỉ phần tử kế tiếp
d. Con trỏ trở tới phần dữ liệu
Câu 208: Định nghĩa cấu trúc dữ liệu của danh sách liên kết đôi được mô tả như sau:
struct Node
{
int Key;
struct Node *next;
struct Node *pre;
};
Trong đó, khai báo Node *next dùng để mô tả
a. Vùng liên kết quản lý địa chỉ phần tử kế tiếp
b. Con trỏ trở tới phần dữ liệu cuối của danh sách
c. Vùng liên kết quản lý địa chỉ phần tử kế tiếp của phần tử cuối
d. Con trỏ trở tới phần dữ liệu
Câu 209: Định nghĩa cấu trúc dữ liệu của danh sách liên kết đơn được mô tả như sau:
struct Node{
int Key;
Node *next;
}OneNode;
Trong đó, khai báo Node *next; dùng để mô tả
a. Con trỏ trỏ tới phần dữ liệu
b. Vùng liên kết quản lý địa chỉ phần tử kế tiếp
c. Con trỏ trỏ tới phần dữ liệu cuối của danh sách
d. Vùng liên kết quản lý địa chỉ phần tử kế tiếp của phần tử cuối
Câu 210: Định nghĩa cấu trúc dữ liệu của danh sách liên kết đơn được mô tả như sau:
struct Node{
int Key;
Node *next;
}OneNode;
Trong đó, khai báo Node *next; dùng để mô tả
a. Vùng liên kết quản lý địa chỉ phần tử kế tiếp của phần tử cuối
b. Con trỏ trỏ tới phần dữ liệu cuối của danh sách
c. Vùng liên kết quản lý địa chỉ phần tử kế tiếp
d. Con trỏ trỏ tới phần dữ liệu
Câu 211: Định nghĩa nào đúng với danh sách liên kết
a. Danh sách liên kết là cấu trúc dữ liệu dạng cây
b. Danh sách liên kết là tập hợp các phần tử mà giữa chúng có sự kết nối với nhau dựa vào liên kết của chúng
c. Danh sách liên kết là cấu trúc dữ liệu tự định nghĩa
d. Danh sách liên kết là tập hợp các phần tử mà đặt kế cận với nhau trong vùng nhớ
Câu 212: Định nghĩa nào đúng với danh sách liên kết
a. Danh sách liên kết là tập hợp các phần tử mà giữa chúng có sự kết nối với nhau dựa vào liên kết của chúng
b. Danh sách liên kết là cấu trúc dữ liệu tự định nghĩa
c. Danh sách liên kết là tập hợp các phần tử mà đặt kế cận với nhau trong vùng nhớ
d. Danh sách liên kết là cấu trúc dữ liệu dạng cây
Câu 213: Độ phức tạp thuật toán được đánh giá có loại nào?
a. Cả hai loại được liệt kê
b. Độ phức tạp không gian
c. Không phải các loại liệt kê
d. Độ phức tạp thời gian
Câu 214: Độ phức tạp thuật toán được đánh giá có loại nào?
a. Cả hai loại được liệt kê
b. Độ phức tạp thời gian
c. Độ phức tạp không gian
d. Không phải các loại liệt kê
Câu 215: Độ phức tạp thuật toán được đánh giá có loại nào?
a. Độ phức tạp không gian
b. Độ phức tạp thời gian
c. Không phải các loại liệt kê
d. Cả hai loại được liệt kê
Câu 216: Độ phức tạp thuật toán được đánh giá có loại nào?
a. Độ phức tạp thời gian
b. Cả hai loại được liệt kê
c. Không phải các loại liệt kê
d. Độ phức tạp không gian
Câu 217: Đoạn mã cài đặt chèn thêm một phần tử mới vào đầu của danh sách liên kết đơn:
void insertFirst ( LIST &Q, Node *new_element ){
if ( Q.Head == NULL ) //nếu danh sách rỗng
{
[1] ……..
[2] ……..
}
else//danh sách không rỗng
{
new_element -> next = Q.Head;
Q.Head = new_element;
}
}
Đoạn mã còn thiếu để đặt vào dòn số [1] và [2].
a. Q.Tail = Q.Head;
Q.Head = new_element;
b. Q.Head = Q.Head;
Q.Tail = new_element;
c. Q.Tail = NULL;
Q.Head = NULL;
d. Q.Head = new_element;
Q.Tail = Q.Head;
Câu 218: Đoạn mã cài đặt chèn thêm một phần tử mới vào đầu của danh sách liên kết đơn:
void insertFirst ( LIST &Q, Node *new_element ){
if ( Q.Head == NULL ) //nếu danh sách rỗng
{
Q.Head = new_element;
Q.Tail = Q.Head;
}
else//danh sách không rỗng
{
[1] ……………
[2] ……………
}
}
Đoạn mã còn thiếu để đặt vào dòn số [1] và [2].
a. new_element -> next = NULL;
Q.Head -> next = new_element;
b. Q.Head = new_element;
new_element -> next = Q.Head;
c. new_element -> next = Q.Head;
Q.Head -> next = new_element;
d. new_element -> next = Q.Head;
Q.Head = new_element;
Câu 219: Đoạn mã cài đặt chèn thêm một phần tử mới vào đầu của danh sách liên kết đơn:
void insertFirst ( LIST &Q, Node *new_element ){
if ( Q.Head == NULL ) //nếu danh sách rỗng
{
Q.Head = new_element;
Q.Tail = Q.Head;
}
else//danh sách không rỗng
{
[1] ……………
[2] ……………
}
}
Đoạn mã còn thiếu để đặt vào dòn số [1] và [2].
a. new_element -> next = Q.Head;
Q.Head = new_element;
b. new_element -> next = Q.Head;
Q.Head -> next = new_element;
c. new_element -> next = NULL;
Q.Head -> next = new_element;
d. Q.Head = new_element;
new_element -> next = Q.Head;
Câu 220: Đoạn mã cài đặt hàm tìm kiếm nhị phân phần tử x trên dãy sắp xếp tăng dần:
int BinarySearch( int a[ ], int n, int x )
{
int left = ……….., right = ……………;
int middle;
do
{
middle = (left+right)/2;
if (x == a[middle]) break;
else if (x<a[middle]) right = middle – 1;
else left = middle + 1;
} while ( left <= right );
if ( left <= right ) return middle;
else return -1;//ko tìm thấy phần tử x
}
Giá trị được điền vào dấu ………… để đoạn mã cài đặt thực hiện đúng:
a. 1 và n
b. n-1 và 0
c. 0 và n-1
d. n và 1
Câu 221: Đoạn mã cài đặt hàm tìm kiếm nhị phân phần tử x trên dãy sắp xếp tăng dần:
int BinarySearch( int a[ ], int n, int x )
{
int left = ……….., right = ……………;
int middle;
do
{
middle = (left+right)/2;
if (x == a[middle]) break;
else if (x<a[middle]) right = middle – 1;
else left = middle + 1;
} while ( left <= right );
if ( left <= right ) return middle;
else return -1;//ko tìm thấy phần tử x
}
Giá trị được điền vào dấu ………… để đoạn mã cài đặt thực hiện đúng:
a. n và 1
b. 0 và n-1
c. 1 và n
d. n-1 và 0
Câu 222: Đoạn mã cài đặt hàm tìm kiếm nhị phân phần tử x trên dãy sắp xếp tăng dần:
int BinarySearch( int a[ ], int n, int x )
{
int left = ……….., right = ……………;
int middle;
do
{
middle = (left+right)/2;
if (x == a[middle]) break;
else if (x<a[middle]) right = middle – 1;
else left = middle + 1;
} while ( left <= right );
if ( left <= right ) return middle;
else return -1;//ko tìm thấy phần tử x
}
Giá trị được điền vào dấu ………… để đoạn mã cài đặt thực hiện đúng:
a. n và 1
b. 0 và n-1
c. n-1 và 0
d. 1 và n
Câu 223: Đoạn mã cài đặt hủy bỏ một phần tử đứng sau một phần tử q trong danh sách liên kết đơn:
void RemoveAfter ( LIST &Q , Node *q ){
Node *p;
if (q != NULL)
{
p = q -> next;
if (p != NULL)
{
if (p == Q.Tail)
{
q->next = NULL;
Q.Tail = q;
}
[1] ………………….
free(p);
}
}
else RemoveHead(Q);
}
Dòng lệnh cần thiết được đặt vào chỗ trống tại dòng số [1]:
a. p = q;
b. p -> next = q -> next;
c. q -> next = p -> next;
d. q = p;
Câu 224: Đoạn mã cài đặt hủy bỏ một phần tử đứng sau một phần tử q trong danh sách liên kết đơn:
void RemoveAfter ( LIST &Q , Node *q ){
Node *p;
if (q != NULL)
{
p = q -> next;
if (p != NULL)
{
if (p == Q.Tail)
{
q->next = NULL;
Q.Tail = q;
}
[1] ………………….
free(p);
}
}
else RemoveHead(Q);
}
Dòng lệnh cần thiết được đặt vào chỗ trống tại dòng số [1]:
a. p -> next = q -> next;
b. q = p;
c. q -> next = p -> next;
d. p = q;
Câu 225: Đoạn mã cài đặt hủy bỏ một phần tử đứng sau một phần tử q trong danh sách liên kết đơn:
void RemoveAfter ( LIST &Q , Node *q ){
Node *p;
if (q != NULL)
{
p = q -> next;
if (p != NULL)
{
if (p == Q.Tail)
{
q->next = NULL;
Q.Tail = q;
}
[1] ………………….
free(p);
}
}
else RemoveHead(Q);
}
Dòng lệnh cần thiết được đặt vào chỗ trống tại dòng số [1]:
a. q = p;
b. p -> next = q -> next;
c. q -> next = p -> next;
d. p = q;
Câu 226: Đoạn mã cài đặt hủy bỏ một phần tử đứng sau một phần tử q trong danh sách liên kết đơn:
void RemoveAfter ( LIST &Q , Node *q ){
Node *p;
if (q != NULL)
{
p = q -> next;
if (p != NULL)
{
if (p == Q.Tail)
{
q->next = NULL;
Q.Tail = q;
}
[1] ………………….
free(p);
}
}
else RemoveHead(Q);
}
Dòng lệnh cần thiết được đặt vào chỗ trống tại dòng số [1]:
a. q = p;
b. q -> next = p -> next;
c. p = q;
d. p -> next = q -> next;
Câu 227: Đoạn mã cài đặt hủy phần tử đầu của danh sách liên kết đơn:
void RemoveHead ( LIST &Q ){
Node *p;
if (Q.Head != NULL)
{
p = Q.Head;
[1] …………………..
free(p);
if ( Q.Head == NULL )
Q.Tail = NULL;
}
}
Dòng lệnh cần thiết được đặt vào chỗ trống tại dòng số [1]:
a. Q.Head = Q.Head -> next;
b. Q.Head -> next = NULL;
c. Q.Head -> next = Q.Head;
d. Q.Head = NULL;
Câu 228: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
……………………..
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> infor = x;
p -> next = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. p = (Node*)malloc(sizeof(Node));
b. p = malloc(Node);
c. p = malloc(sizeof(Node));
d. p = (Node*)malloc(Node));
Câu 229: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
……………………..
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> infor = x;
p -> next = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. p = (Node*)malloc(sizeof(Node));
b. p = malloc(sizeof(Node));
c. p = (Node*)malloc(Node));
d. p = malloc(Node);
Câu 230: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
……………………..
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> infor = x;
p -> next = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. p = malloc(sizeof(Node));
b. p = malloc(Node);
c. p = (Node*)malloc(sizeof(Node));
d. p = (Node*)malloc(Node));
Câu 231: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> …….. = x;
p -> next = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. infor
b. link
c. data
d. next
Câu 232: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> …….. = x;
p -> next = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. next
b. infor
c. data
d. link
Câu 233: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> …….. = x;
p -> next = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. next
b. link
c. data
d. infor
Câu 234: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p ->infor = x;
p -> …. = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ ………….
a. data
b. # link
c. next
d. infor
#
Câu 235: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p ->infor = x;
p -> …. = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ ………….
a. data
b. next
c. infor
#
d. # link
Câu 236: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p ->infor = x;
p -> …. = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ ………….
a. infor
#
b. data
c. next
d. # link
Câu 237: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đôi với mỗi nút gồm các thành phần (infor, next, pre) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p ->infor = x;
p -> …. = NULL;
p -> pre = NULL;
return p;
}
Điền phần còn thiếu vào chỗ ………….
a. next
b. infor
#
c. # link
d. data
Câu 238: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đơn với mỗi nút gồm hai thành phần (infor, next) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> infor = ……;
p -> next = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. x
b. 0
c. NULL
d. Data
Câu 239: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đơn với mỗi nút gồm hai thành phần (infor, next) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> infor = ……;
p -> next = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. x
b. NULL
c. Data
d. 0
Câu 240: Đoạn mã để tạo ra nút mới có thành phần là x trong danh sách liên kết đơn với mỗi nút gồm hai thành phần (infor, next) sau:
Node* get_node( Data x ){
Node *p;
p = (Node*)malloc(sizeof(Node));
if ( p == NULL )
{
printf(“Ko du bo nho”);
exit(1);
}
p -> infor = x;
p -> ….. = NULL;
return p;
}
Điền phần còn thiếu vào chỗ …………..
a. link
b. infor
c. data
d. next
Câu 241: Đoạn mã dưới đây mô tả thuật toán gì: B1: k = 1 B2: if M[k] == X and k !=n
B2.1: k++
B2.2: Lặp lại bước 2
B3: if (k<N) thông báo tìm thấy tại vị trí thứ k
B4: else thông báo không tìm thấy
B5: Kết thúc
a. Tất cả các lựa chọn trên đều sai
b. Tìm kiếm tuyến tính phần tử X trong mảng
c. Tìm phần tử nhỏ nhất của mảng M gồm N phần tử
d. Tìm kiếm nhị phân phần tử có giá trị X
Câu 242: Đoạn mã dưới đây mô tả thuật toán gì: B1: k = 1 B2: if M[k] == X and k !=n
B2.1: k++
B2.2: Lặp lại bước 2
B3: if (k<N) thông báo tìm thấy tại vị trí thứ k
B4: else thông báo không tìm thấy
B5: Kết thúc
a. Tìm kiếm tuyến tính phần tử X trong mảng
b. Tìm kiếm nhị phân phần tử có giá trị X
c. Tìm phần tử nhỏ nhất của mảng M gồm N phần tử
d. Tất cả các lựa chọn trên đều sai
Câu 243: Đoạn mã dưới đây mô tả thuật toán gì: B1: k = 1 B2: if M[k] == X and k !=n
B2.1: k++
B2.2: Lặp lại bước 2
B3: if (k<N) thông báo tìm thấy tại vị trí thứ k
B4: else thông báo không tìm thấy
B5: Kết thúc
a. Tìm phần tử nhỏ nhất của mảng M gồm N phần tử
b. Tìm kiếm nhị phân phần tử có giá trị X
c. Tất cả các lựa chọn trên đều sai
d. Tìm kiếm tuyến tính phần tử X trong mảng
Câu 244: Đoạn mã khởi tạo danh sách rỗng sau:
void init( DList &Q ){
Q.Head = ……;
Q.Tail = NULL;
}
Phần còn thiếu điền vào dấu ……. là gì
a. NILL
b. NULL
c. O
d. Các đáp án đều sai
Câu 245: Đoạn mã khởi tạo danh sách rỗng sau:
void init( DList &Q ){
Q.Head = ……;
Q.Tail = NULL;
}
Phần còn thiếu điền vào dấu ……. là gì
a. NULL
b. Các đáp án đều sai
c. NILL
d. O
Câu 246: Đoạn mã khởi tạo danh sách rỗng sau:
void init( DList &Q ){
Q.Head = ……;
Q.Tail = NULL;
}
Phần còn thiếu điền vào dấu ……. là gì
a. O
b. Các đáp án đều sai
c. NILL
d. NULL
Câu 247: Đoạn mã khởi tạo danh sách rỗng sau:
void init( DList &Q ){
Q.Head = ……;
Q.Tail = NULL;
}
Phần còn thiếu điền vào dấu ……. là gì
a. O
b. NILL
c. Các đáp án đều sai
d. NULL
Câu 248: Đoạn mã khởi tạo danh sách rỗng sau:
void init( List &Q ){
Q.Head = ……;
Q.Tail = NULL;
}
Phần còn thiếu điền vào dấu ……. là gì
a. Không phải các đáp án trên
b. O
c. NILL
d. NULL
Câu 249: Đoạn mã sau đây làm nhiệm vụ gì?
void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].Tuoi < ds[min].Tuoi ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
a. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Insertion
b. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Selection
c. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Insertion
d. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Selection
Câu 250: Đoạn mã sau đây làm nhiệm vụ gì?
void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].Tuoi < ds[min].Tuoi ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
a. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Selection
b. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Insertion
c. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Selection
d. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Insertion
Câu 251: Đoạn mã sau đây làm nhiệm vụ gì?
void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].Tuoi < ds[min].Tuoi ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
a. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Selection
b. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Insertion
c. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Selection
d. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Insertion
Câu 252: Đoạn mã sau đây sử dụng thuật toán Sắp xếp gì?
void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
a. Insertion Sort
b. Quick Sort
c. Interchange Sort
d. Selection Sort
Câu 253: Đoạn mã sau đây sử dụng thuật toán Sắp xếp gì?
void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
a. Interchange Sort
b. Insertion Sort
c. Selection Sort
d. Quick Sort
Câu 254: Đoạn mã sau đây sử dụng thuật toán Sắp xếp gì?
void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
a. Quick Sort
b. Insertion Sort
c. Interchange Sort
d. Selection Sort
Câu 255: Đoạn mã sau đây sử dụng thuật toán Sắp xếp gì?
void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i<n-1 ; i++ ) { min = i; for( j=i+1 ; j<n ; j++ ) if ( ds[j].DTB < ds[min].DTB ) min = j; if( min != i )
{ tg = ds[min];
ds[min] = ds[i];
ds[i] = tg; } }}
a. Selection Sort
b. Interchange Sort
c. Quick Sort
d. Insertion Sort
Câu 256: Đoạn mã sau đây thực hiện nhiệm vụ gì
void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].Tuoi>x.Tuoi)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
a. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Selection
b. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Insertion
c. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Selection
d. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Insertion
Câu 257: Đoạn mã sau đây thực hiện nhiệm vụ gì
void SXDSV_InsertionSort( int n, SV ds[]){ int pos,i; SV x; for(i=1;i<n;i++) { x = ds[i]; pos = i-1; while((pos>=0)&&(ds[pos].Tuoi>x.Tuoi)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}
a. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Selection
b. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Selection
c. Thực hiện sắp xếp danh sách SV theo Tuoi giảm dần bằng thuật toán Insertion
d. Thực hiện sắp xếp danh sách SV theo Tuoi tăng dần bằng thuật toán Insertion
Câu 258: Đoạn mã sau đây thực hiện yêu cầu xử lý gì?
int TK_SV_Ten_Tuyentinh(int n, SV ds[], char ht[]){ for(int i = 0; i<n; i++) if ( strcmp(ds[i].HoTen, ht)==0) break; if (i<n) return 1; else return -1;}
a. Thực hiện tìm kiếm trong danh sách (ds) có SV có tên là ht hay không? Nếu có thì trả lại giá trị là 1, ngược lại không có trả lại giá trị là -1, thuật toán sử dụng là thuật toán tìm kiếm tuyến tính
b. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1
c. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1, thuật toán sử dụng là thuật toán tìm kiếm nhị phân
d. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị vị trí của phần tử tìm thấy nếu không có trả lại giá -1
Câu 259: Đoạn mã sau đây thực hiện yêu cầu xử lý gì?
int TK_SV_Ten_Tuyentinh(int n, SV ds[], char ht[]){ for(int i = 0; i<n; i++) if ( strcmp(ds[i].HoTen, ht)==0) break; if (i<n) return 1; else return -1;}
a. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1
b. Thực hiện tìm kiếm trong danh sách (ds) có SV có tên là ht hay không? Nếu có thì trả lại giá trị là 1, ngược lại không có trả lại giá trị là -1, thuật toán sử dụng là thuật toán tìm kiếm tuyến tính
c. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị vị trí của phần tử tìm thấy nếu không có trả lại giá -1
d. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1, thuật toán sử dụng là thuật toán tìm kiếm nhị phân
Câu 260: Đoạn mã sau đây thực hiện yêu cầu xử lý gì?
int TK_SV_Ten_Tuyentinh(int n, SV ds[], char ht[]){ for(int i = 0; i<n; i++) if ( strcmp(ds[i].HoTen, ht)==0) break; if (i<n) return 1; else return -1;}
a. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị vị trí của phần tử tìm thấy nếu không có trả lại giá -1
b. Thực hiện tìm kiếm trong danh sách (ds) có SV có tên là ht hay không? Nếu có thì trả lại giá trị là 1, ngược lại không có trả lại giá trị là -1, thuật toán sử dụng là thuật toán tìm kiếm tuyến tính
c. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1
d. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1, thuật toán sử dụng là thuật toán tìm kiếm nhị phân
Câu 261: Đoạn mã sau đây thực hiện yêu cầu xử lý gì?
int TK_SV_Ten_Tuyentinh(int n, SV ds[], char ht[]){ for(int i = 0; i<n; i++) if ( strcmp(ds[i].HoTen, ht)==0) break; if (i<n) return 1; else return -1;}
a. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị vị trí của phần tử tìm thấy nếu không có trả lại giá -1
b. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1
c. Thực hiện tìm kiếm trong danh sách (ds) có SV có tên là ht hay không? Nếu có thì trả lại giá trị là 1, ngược lại không có trả lại giá trị là -1, thuật toán sử dụng là thuật toán tìm kiếm tuyến tính
d. Thực hiện tìm kiếm trong danh sách ds có SV có mã là ht hay không? Nếu có trả lại giá trị 1 nếu không có trả lại giá -1, thuật toán sử dụng là thuật toán tìm kiếm nhị phân
Câu 262: Đoạn mô tả này thuộc thuật toán nào:
Bước 1: i = 0
Bước 2: tính các giá trị j = i + 1
Bước 3: Trong khi j<n thực hiện
– nếu a[j] < a[i] thì hoán đổi a[i] với a[j]
– j = j + 1;
Bước 4: i = i +1
nếu i<n-1 thì lặp lại bước 2, ngược lại thì dừng
a. Tìm kiếm tuyến tính
b. Sắp xếp chèn trực tiếp
.
c. Sắp xếp đổi chỗ trực tiếp
d.
Tìm kiếm nhị phân
Câu 263: Đoạn mô tả này thuộc thuật toán nào:
Bước 1: i = 0
Bước 2: tính các giá trị j = i + 1
Bước 3: Trong khi j<n thực hiện
– nếu a[j] < a[i] thì hoán đổi a[i] với a[j]
– j = j + 1;
Bước 4: i = i +1
nếu i<n-1 thì lặp lại bước 2, ngược lại thì dừng
a. Tìm kiếm tuyến tính
b. Sắp xếp chèn trực tiếp
.
c. Sắp xếp đổi chỗ trực tiếp
d.
Tìm kiếm nhị phân
Câu 264: Đoạn mô tả này thuộc thuật toán nào:
Bước 1: i = 0
Bước 2: tính các giá trị j = i + 1
Bước 3: Trong khi j<n thực hiện
– nếu a[j] < a[i] thì hoán đổi a[i] với a[j]
– j = j + 1;
Bước 4: i = i +1
nếu i<n-1 thì lặp lại bước 2, ngược lại thì dừng
a. Tìm kiếm tuyến tính
b. Sắp xếp chèn trực tiếp
.
c. Sắp xếp đổi chỗ trực tiếp
d.
Tìm kiếm nhị phân
Câu 265: Đoạn mô tả này thuộc thuật toán nào:
Bước 1: i = 0
Bước 2: tính các giá trị j = i + 1
Bước 3: Trong khi j<n thực hiện
– nếu a[j] < a[i] thì hoán đổi a[i] với a[j]
– j = j + 1;
Bước 4: i = i +1
nếu i<n-1 thì lặp lại bước 2, ngược lại thì dừng
a.
Tìm kiếm nhị phân
b. Sắp xếp đổi chỗ trực tiếp
c. Sắp xếp chèn trực tiếp
.
d. Tìm kiếm tuyến tính
Câu 266: Đối với thuật toán sắp xếp chọn trực tiếp cho dãy phần tử sau (10 phần tử):
16 60 2 25 15 45 5 30 33 20
Cần thực hiện bao nhiêu lựa chọn phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần
a. 10 lần
b. 8 lần
c. 9 lần
d. 7 lần
Câu 267: Đối với thuật toán sắp xếp chọn trực tiếp cho dãy phần tử sau (10 phần tử):
16 60 2 25 15 45 5 30 33 20
Cần thực hiện bao nhiêu lựa chọn phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần
a. 7 lần
b. 10 lần
c. 9 lần
d. 8 lần
Câu 268: Đối với thuật toán sắp xếp chọn trực tiếp cho dãy phần tử sau (10 phần tử):
16 60 2 25 15 45 5 30 33 20
Cần thực hiện bao nhiêu lựa chọn phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần
a. 7 lần
b. 9 lần
c. 8 lần
d. 10 lần
Câu 269: Đối với thuật toán sắp xếp chọn trực tiếp cho dãy phần tử sau (10 phần tử):
16 60 2 25 15 45 5 30 33 20
Cần thực hiện bao nhiêu lựa chọn phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần
a. 8 lần
b. 7 lần
c. 9 lần
d. 10 lần
Câu 270: Đối với thuật toán sắp xếp chọn trực tiếp cho dãy phần tử sau (10 phần tử):
16 60 2 25 15 45 5 30 33 20
Cần thực hiện bao nhiêu lựa chọn phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần
a. 9 lần
b. 7 lần
c. 10 lần
d. 8 lần
Câu 271: Giả sử cần sắp xếp mảng M có N phần tử sau theo phưuơng pháp sắp xếp chèn trực tiếp:
11 16 12 75 51 54 5 73 36 52 98
Cần thực hiện bao nhiêu lần chèn các phần tử vào dãy con đã có thứ tự tăng dần đứng đầu dãy M để sắp xếp mảng tăng dần:
a. 7 lần
b. 9 lần
c. 10 lần
d. 8 lần
Câu 272: Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử:
1. void BubbleSort(int M[ ], int N)
2. {
3.int i,j,tg;
4.for( i = 0 ; i < N-1 ; i++ )
5…………………………………..
6.if ( M[j] < M[j-1] )
7.{
8.tg = M[j];
9.M[ j] = M[j-1];
10.M[ j-1] = tg;
11.}
12.}
Lệnh nào sau đây sẽ được đưa vào dòng số [5] của đoạn mã trên
a. for( j = N; j< i; j–)
b. for( j = N-1; j>i; j++)
c. for( j = N-1; j>i; j–)
d. Không có dòng lệnh nào phù hợp, không cần thêm thuật toán vẫn chạy đúng
Câu 273: Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử:
1. void BubbleSort(int M[ ], int N)
2. {
3.int i,j,tg;
4.for( i = 0 ; i < N-1 ; i++ )
5…………………………………..
6.if ( M[j] < M[j-1] )
7.{
8.tg = M[j];
9.M[ j] = M[j-1];
10.M[ j-1] = tg;
11.}
12.}
Lệnh nào sau đây sẽ được đưa vào dòng số [5] của đoạn mã trên
a. for( j = N; j< i; j–)
b. for( j = N-1; j>i; j++)
c. for( j = N-1; j>i; j–)
d. Không có dòng lệnh nào phù hợp, không cần thêm thuật toán vẫn chạy đúng
Câu 274: Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử:
1. void BubbleSort(int M[ ], int N)
2. {
3.int i,j,tg;
4.for( i = 0 ; i < N-1 ; i++ )
5…………………………………..
6.if ( M[j] < M[j-1] )
7.{
8.tg = M[j];
9.M[ j] = M[j-1];
10.M[ j-1] = tg;
11.}
12.}
Lệnh nào sau đây sẽ được đưa vào dòng số [5] của đoạn mã trên
a. for( j = N; j< i; j–)
b. for( j = N-1; j>i; j++)
c. Không có dòng lệnh nào phù hợp, không cần thêm thuật toán vẫn chạy đúng
d. for( j = N-1; j>i; j–)
Câu 275: Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử:
1. void BubbleSort(int M[ ], int N)
2. {
3.int i,j,tg;
4.for( i = 0 ; i < N-1 ; i++ )
5…………………………………..
6.if ( M[j] < M[j-1] )
7.{
8.tg = M[j];
9.M[ j] = M[j-1];
10.M[ j-1] = tg;
11.}
12.}
Lệnh nào sau đây sẽ được đưa vào dòng số [5] của đoạn mã trên
a. for( j = N-1; j>i; j++)
b. for( j = N-1; j>i; j–)
c. Không có dòng lệnh nào phù hợp, không cần thêm thuật toán vẫn chạy đúng
d. for( j = N; j< i; j–)
Câu 276: Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử:
1. void BubbleSort(int M[ ], int N)
2. {
3.int i,j,tg;
4.for( i = 0 ; i < N-1 ; i++ )
5…………………………………..
6.if ( M[j] < M[j-1] )
7.{
8.tg = M[j];
9.M[ j] = M[j-1];
10.M[ j-1] = tg;
11.}
12.}
Lệnh nào sau đây sẽ được đưa vào dòng số [5] của đoạn mã trên
a. Không có dòng lệnh nào phù hợp, không cần thêm thuật toán vẫn chạy đúng
b. for( j = N-1; j>i; j–)
c. for( j = N; j< i; j–)
d. for( j = N-1; j>i; j++)
Câu 277: Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử:
1. void BubbleSort(int M[ ], int N)
2. {
3.int i,j,tg;
4.for( i = 0 ; i < N-1 ; i++ )
5…………………………………..
6.if ( M[j] < M[j-1] )
7.{
8.tg = M[j];
9.M[ j] = M[j-1];
10.M[ j-1] = tg;
11.}
12.}
Lệnh nào sau đây sẽ được đưa vào dòng số [5] của đoạn mã trên
a. Không có dòng lệnh nào phù hợp, không cần thêm thuật toán vẫn chạy đúng
b. for( j = N-1; j>i; j++)
c. for( j = N; j< i; j–)
d. for( j = N-1; j>i; j–)
Câu 278: Hàng đợi còn được gọi là danh sách
a. Cả hai đáp án đều đúng
b. FIFO
c. LIFO
d. Cả hai đáp án đều sai
Câu 279: Lựa chọn phương án trả lời đúng nhất cho biết hình ảnh sau là gì?
/
a. Cây nhị phân
b. Cây nhị phân tìm kiếm
c. Cây tổng quát
d. Cây 2-3-4
Câu 280: Ma trận kề của đồ thị có hướng G = <V,E>
a. Là ma trận không đối xứng
b. Là ma trận đường chéo trên
c. Là ma trận đối xứng
d. Là ma trận đơn vị
Mỗi nút trong danh sách đơn gồm có mấy phần:
a. 2 phần
b. 3 phần
c. 5 phần
d. 4 phần
Câu 281: Một chương trình cài đặt trên máy tính được xác định bởi thành phần nào
a. Cả hai thành phần
b. Không phải là các thành phần
c. Thuật toán
d. Cấu trúc dữ liệu
Câu 282: Ngăn xếp còn được gọi là danh sách
a. Cả hai đáp án đều đúng
b. LIFO
c. Cả hai đáp án đều sai
d. FIFO
Câu 283: Phần tử thế mạng có thể được dùng khi xóa nút trong trường hợp nút có hai nhánh con là gì?
a. Cả hai phát biểu đều sai
b. Cả hai phát biểu đều đúng
c. là phần tử lớn nhất trong số các phần tử bên nhánh trái
d. là phần tử nhỏ nhất trong số các phần tử bên nhánh phải
Câu 284: Phương pháp duyệt NLR là phương pháp duyệt gì?
a. Cả 3 lựa chọn đều đúng
b. Left – Node – Righ
c. Left – Right – Node
d. Node – Left – Right
Câu 285: Ta gọi đỉnh v là đỉnh cô lập trong đồ thị vô hướng G = <V, E>
a. Nếu bậc của đỉnh v là một số chẵn
b. Nếu bậc của đỉnh v là một số lẻ
c. Nếu bậc của đỉnh v là 0
d. Nếu bậc của đỉnh v là 1
Câu 286: Thao tác thêm một phần tử vào cây khi so sánh giá trị của phần tử cần thêm vào so với nút đang xét nếu phần tử cần thêm vào lớn hơn thì được thêm vào vị trí nào?
a. Cả hai phát biểu trên đều đúng
b. Phần tử mới được bổ sung vào nhánh trái của nút đang xét
c. Cả hai phát biểu trên đều sai
d. Phần tử mới được bổ sung vào nhánh phải của nút đang xét
Câu 287: Thủ tục mô tả thuật toán sắp xếp chọn trực tiếp:
void SapXepChonTrucTiep( T M[], int N)
{
int K = 0, posmin;
int Temp;
…………………………………………
{
T Min = M[K];
Posmin = K;
for( int pos = K+1; pos<N; pos++)
if( Min > M[pos])
{
Min = M[pos];
Posmin = pos;
}
Temp = M[k];
M[k] = m[posmin];
M[posmin] = Temp;
}
return;
}
Đoạn mã cần thiết để đặt vào dòng …………………để chương trình sắp xếp đúng
a. for ( k =0; k<n-1; k–)
b. for ( k =0; k<n-1; k++)
c. for ( k =n; k>0; k–)
d. for ( k =n-1; k>0; k–)
Câu 288: Thủ tục mô tả thuật toán sắp xếp chọn trực tiếp:
void SapXepChonTrucTiep( T M[], int N)
{
int K = 0, posmin;
int Temp;
…………………………………………
{
T Min = M[K];
Posmin = K;
for( int pos = K+1; pos<N; pos++)
if( Min > M[pos])
{
Min = M[pos];
Posmin = pos;
}
Temp = M[k];
M[k] = m[posmin];
M[posmin] = Temp;
}
return;
}
Đoạn mã cần thiết để đặt vào dòng …………………để chương trình sắp xếp đúng
a. for ( k =0; k<n-1; k–)
b. for ( k =n-1; k>0; k–)
c. for ( k =0; k<n-1; k++)
d. for ( k =n; k>0; k–)
Câu 289: Thủ tục mô tả thuật toán sắp xếp chọn trực tiếp:
void SapXepChonTrucTiep( T M[], int N)
{
int K = 0, posmin;
int Temp;
…………………………………………
{
T Min = M[K];
Posmin = K;
for( int pos = K+1; pos<N; pos++)
if( Min > M[pos])
{
Min = M[pos];
Posmin = pos;
}
Temp = M[k];
M[k] = m[posmin];
M[posmin] = Temp;
}
return;
}
Đoạn mã cần thiết để đặt vào dòng …………………để chương trình sắp xếp đúng
a. for ( k =0; k<n-1; k++)
b. for ( k =n; k>0; k–)
c. for ( k =n-1; k>0; k–)
d. for ( k =0; k<n-1; k–)
Câu 290: Thủ tục mô tả thuật toán sắp xếp chọn trực tiếp:
void SapXepChonTrucTiep( T M[], int N)
{
int K = 0, posmin;
int Temp;
…………………………………………
{
T Min = M[K];
Posmin = K;
for( int pos = K+1; pos<N; pos++)
if( Min > M[pos])
{
Min = M[pos];
Posmin = pos;
}
Temp = M[k];
M[k] = m[posmin];
M[posmin] = Temp;
}
return;
}
Đoạn mã cần thiết để đặt vào dòng …………………để chương trình sắp xếp đúng
a. for ( k =n; k>0; k–)
b. for ( k =n-1; k>0; k–)
c. for ( k =0; k<n-1; k++)
d. for ( k =0; k<n-1; k–)
Câu 291: Thủ tục mô tả thuật toán sắp xếp chọn trực tiếp:
void SapXepChonTrucTiep( T M[], int N)
{
int K = 0, posmin;
int Temp;
…………………………………………
{
T Min = M[K];
Posmin = K;
for( int pos = K+1; pos<N; pos++)
if( Min > M[pos])
{
Min = M[pos];
Posmin = pos;
}
Temp = M[k];
M[k] = m[posmin];
M[posmin] = Temp;
}
return;
}
Đoạn mã cần thiết để đặt vào dòng …………………để chương trình sắp xếp đúng
a. for ( k =n-1; k>0; k–)
b. for ( k =0; k<n-1; k++)
c. for ( k =n; k>0; k–)
d. for ( k =0; k<n-1; k–)
Câu 292: Thuật toán được biểu diễn bằng cách nào
a. Liệt kê từng bước
b. Giả mã
c. Tất cả các cách được liệt kê
d. Sơ đồ khối
Câu 293: Tổ chức của danh sách liên kết kép gồm có mấy thành phần:
a. 3 thành phần
b. 4 thành phần
c. 5 thành phần
d. 2 thành phần
Câu 294: Tổng các phần tử hàng i, cột j của ma trận kề đồ thị vô hướng G = <V,E> đúng bằng
a. Cả ba phương án đều sai
b. Bậc của đỉnh i, đỉnh j
c. Một nửa số bậc của đỉnh i, đỉnh j
d. Hai lần số bậc của đỉnh i, đỉnh j
Câu 295: Tổng các phần tử trên hàng trong ma trận kề của đồ thị có hướng G = <V,E> đúng bằng
a. Cả ba phương án đều sai
b. Một nửa số cung của đồ thị
c. Số cung của đồ thị
d. Hai lần số cung của đồ thị
Câu 296: Trong giải thuật đệ quy thì lời giải trực tiếp mà không phải nhờ đến một bài toán con nào đó là thành phần nào?
a. Công thức tổng quát
b. Phần tử neo
c. Cả hai lựa chọn đều đúng
d. Cả hai lựa chọn đều sai
Câu 297: Trong một nút của danh sách liên kết đơn, thành phần infor là thành phần gì?
a. Cả hai phát biểu trên đều sai
b. Cả hai phát biểu trên đều đúng
c. Để lưu trữ hay mô tả thông tin được lưu trữ trong nút của danh sách
d. Để lưu trữ địa chỉ của nút kế tiếp hoặc giá trị NULL nếu không liên kết đến phần tử nào
Câu 298: Ứng dụng cơ bản của ngăn xếp gồm
a. Chuyển đổi cơ số
b. Tính giá trị biểu thức
c. Đảo ngược xâu ký tự
d. Tất cả các phương án đều đúng
Câu 299: void RemoveHead ( LIST &Q ){
Node *p;
if (Q.Head != NULL)
{
p = Q.Head;
…[1] …
free(p);
if ( Q.Head == NULL )
Q.Tail = NULL;
}
}
Dòng lệnh cần thiết được đặt vào chỗ trống tại dòng số [1]:
a. Q.Head -> next = NULL;
b. Q.Head = NULL;
c. Q.Head = Q.Head -> next;
d. Q.Head -> next = Q.Head;