Câu hỏi và đáp án môn Cấu trúc dữ liệu và giải thuật EHOU

5/5 - (1 vote)

Câu hỏi và đáp án môn Cấu trúc dữ liệu và giải thuật EHOU, hỗ trợ học trực tuyến tại Đại học Mở Hà Nội

Hướng dẫn tìm nhanh trên trình duyệt: Ấn Ctrl+F sau đó nhập câu hỏi và nhấn Enter.

Câu hỏi 1: 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?

  • 11, 23, 42, 58, 65, 74
  • 11, 23, 42, 58, 74, 65
  • 11, 23, 42, 65, 58, 74
  • 11, 23, 42, 74, 65, 58

Câu hỏi 2: ** 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?

  • 74, 23, 42, 11, 65, 58
  • 74, 65, 42, 11, 23, 58
  • 74, 65, 58, 11, 23, 42
  • 74, 65, 58, 42, 23, 11

Câu hỏi 3: ** 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 giảm dần, sau lần lặp thứ ba kết quả của dãy là thế nào?

  • 42, 23, 74, 11, 65, 58
  • 74, 42, 23, 65, 11, 58
  • 74, 65, 42, 23, 58, 11
  • 74, 65, 58, 42, 23, 11

Câu hỏi 4: Bậc của cây có nghĩa là gì?

  • Cả hai phát biểu đều đúng
  • Cả hai phát biểu đều SAI
  • Là bậc lớn nhất của các nút trong cây
  • Là bậc nhỏ nhất của các nút trong cây

Câu hỏi 5: Bậc của nút trong cây có nghĩa là gì?

  • Là số nhánh con của nút đó
  • Là số nhánh con nhỏ nhất của nút con của nút đó
  • Là số nhánh con phải của nút đó
  • Là số nhánh con trái của nút đó

Câu hỏi 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-1Bướ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ánGiá trị cần điền vào dấu ………….. là bao nhiêu để thuật toán thực hiện đúng

  • left = middle – 1
  • left = middle + 1
  • right = middle – 1
  • right = midle + 1

Câu hỏi 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ánGiá trị cần điền vào dấu ………….. là bao nhiêu để thuật toán thực hiện đúng

  • 0 và n
  • 0 và n-1
  • n và 0
  • n-1 và 0

Câu hỏi 8: Các dạng biểu diễn của biểu thức toán học gồm

  • Tiền tố và hậu tố
  • Tiền tố và trung tố
  • Tiền tố, trung tố và hậu tố
  • Trung tố và hậu tố

Câu hỏi 9: Các hàm để cấp phát bộ nhớ là?.

  • calloc(), new(), free()
  • malloc(), calloc(), new()
  • malloc(), calloc(), new(), free()
  • malloc(), delete(), new(), free().

Câu hỏi 10: Các hàm để giải phóng bộ nhớ là

  • calloc(), delete(), new(), free().
  • delete(),free().
  • malloc(), delete(), free().
  • malloc(), delete(), new(), free().

Câu hỏi 11: Các loại danh sách liên kết gồm:

  • Danh sách liên kết đơn và danh sách liên kết kép
  • Danh sách liên kết đơn và danh sách liên kết vòng
  • 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
  • Danh sách liên kết kép và danh sách liên kết vòng

Câu hỏi 12: Các phương pháp tìm kiếm là

  • Tất cả các đáp án đều sai
  • Tìm kiếm nhị phân
  • Tìm kiếm tuyến tính
  • Tìm kiếm tuyến tính và nhị phân

Câu hỏi 13: Các thành phần của danh sách đơn gồm:

  • Dữ liệu (data)
  • Dữ liệu (data) và liên kết (link)
  • Liên kết (link)
  • Số phần tử của danh sách (number)

Câu hỏi 14: Các thành phần của danh sách liên kết kép gồm:

  • Dữ liệu (infor) và liên kết với nút sau (next)
  • Dữ liệu (infor) và liên kết với nút trước (previous)
  • 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)
  • Liên kết với nút trước (previous) và liên kết với nút sau (next)

Câu hỏi 15: Các thao tác cơ bản trên danh sách gồm thao tác gì:

  • bổ sung, loại bỏ, cập nhật
  • tách, ghép, …
  • Tất cả các thao tác trên
  • tìm kiếm, sắp xếp, sao chép

Câu hỏi 16: Các thao tác được định nghĩa cho hàng đợi một cách tổng quát

  • Cả hai đáp án đều đúng
  • Cả hai đáp án đều sai
  • Get
  • Put

Câu hỏi 17: Các thao tác được định nghĩa cho ngăn xếp một cách tổng quát

  • Cả hai đáp án đều đúng
  • Cả hai đáp án đều sai
  • Pop
  • Push

Câu hỏi 18: 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:

  • Chèn thêm vào cuối danh sách và vào sau một phần tử q đã biết
  • Chèn thêm vào đầu danh sách và vào cuối danh sách
  • Chèn thêm vào đầu danh sách và vào sau một phần tử q đã biết
  • 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

Câu hỏi 19: 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:

  • Nút xóa có một nhánh con và nút xóa có hai nhánh con
  • Nút xóa là nút lá và nút xóa có hai nhánh con
  • Nút xóa là nút lá và nút xóa có một nhánh con
  • 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 hỏi 20: 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:

  • Hủy phần tử có giá trị xác định k và hủy phần tử đứng sau phần tử q
  • Hủy phần tử đầu danh sách và hủy phần tử có giá trị xác định k
  • Hủy phần tử đầu danh sách và hủy phần tử đứng sau phần tử q
  • 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 hỏi 21: Các ứng dụng cơ bản của hàng đợi gồm

  • Chuyển đổi cơ số
  • Đảo ngược xâu ký dự
  • Tất cả các phương án đều đúng
  • Tất cả các phương án đều sai

Câu hỏi 22: Cây là đồ thị vô hướng liên thông

  • ✅ Không có chu trình

Câu hỏi 23: Cho biết các nút có bậc bằng 0 trong hình ảnh sau:

  • ✅ 28, 32, 38, 47, 55

Câu hỏi 24: Cho biết các nút có bậc bằng 2 trong hình ảnh sau:

  • ✅ 30, 35, 50, 40

Câu hỏi 25: 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ự

  • Ý tưởng của thuật toán sắp xếp InsertionSort
  • Ý tưởng của thuật toán sắp xếp InterchangeSort
  • Ý tưởng của thuật toán tìm kiếm nhị phân
  • Ý tưởng của thuật toán tìm kiếm tuyến tính

Câu hỏi 26: 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();
}

  • 4
  • 5
  • 6
  • 7

Câu hỏi 27: 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();}

  • 14
  • 18
  • 2
  • 20

Câu hỏi 28: Cho biết kết quả của đoạn chương trình sau:long f3(int n){ if (n==1) return 1; else return n*n + f3(n-1); }int main(){ long x = f3(3); printf(“%ld”, x); getch();}

  • 12
  • 13
  • 14
  • 16

Câu hỏi 29: 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();}

  • 10
  • 12
  • 2
  • 6

Câu hỏi 30: Cho biết kết quả khi CTC CreateTree_mang(T) được gọi trong chương trình chínhint 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);}

  • ✅ Duyet cay: 4 6 7 8 9 10 11

Câu hỏi 31: Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LNR (Left-Node-Right)?

  • ✅ 28, 30, 32, 35, 38, 40, 45, 47, 50, 55

Câu hỏi 32: Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LRN (Left-Right-Node)?

  • ✅ 28, 32, 30, 38, 35, 47, 45, 55, 50, 40

Câu hỏi 33: Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt NLR (Node-Left-Right)?

  • ✅ 40, 35, 30, 28, 32, 38, 50, 45, 47, 55

Câu hỏi 34: 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[k] có giá trị lớn nhất
  • a[k] có giá trị nhỏ nhất
  • k có giá trị lớn nhất
  • k có giá trị nhỏ nhất

Câu hỏi 35: 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[n-1];for(i=n-2; i>=0; i–) if (a[i] < k) k = a[i];}

  • a[k] có giá trị lớn nhất
  • a[k] có giá trị nhỏ nhất
  • k có giá trị lớn nhất
  • k có giá trị nhỏ nhất

Câu hỏi 36: 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);}

  • 16
  • 16.00
  • 6
  • 9

Câu hỏi 37: 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à?

  • ✅ Chèn vào đầu danh sách

Câu hỏi 38: 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

  • 10
  • 3
  • 42
  • 5

Câu hỏi 39: 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

  • 10
  • 3
  • 42
  • 5

Câu hỏi 40: Cho các phần tử 5, 10, 3, 42 lần lượt được bổ sung vào ngăn xếp (Stack). Phần tử nào được lấy ra cuối cùng

  • 10
  • 3
  • 42
  • 5

Câu hỏi 41: Cho các phần tử 5, 10, 3, 42 lần lượt được bổ sung vào ngăn xếp (Stack). Phần tử nào được lấy ra đầu tiên

  • 10
  • 3
  • 42
  • 5

Câu hỏi 42: 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?

  • 17, 19, 20, 31, 32, 36, 41
  • 17, 20, 19, 32, 41, 36, 31
  • 31, 19, 17, 20, 36, 32, 41
  • 31, 19, 36, 20, 41, 17, 32

Câu hỏi 43: 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 NLR thì kết quả thu được thứ tự các phần tử là như thế nào?

  • 17, 19, 20, 31, 32, 36, 41
  • 17, 20, 19, 32, 41, 36, 31
  • 31, 19, 17, 20, 36, 32, 41
  • 31, 19, 36, 20, 41, 17, 32

Câu hỏi 44: 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?

  • 31, 19, 36, 20, 41, 17, 32
  • 31, 36, 41, 32, 19, 20, 17
  • 41, 32, 36, 20, 17, 19, 31
  • 41, 36, 32, 31, 20, 19, 17

Câu hỏi 45: 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

  • 31, 19, 36, 20, 41, 17, 32
  • 31, 36, 41, 32, 19, 20, 17
  • 41, 32, 36, 20, 17, 19, 31
  • 41, 36, 32, 31, 20, 19, 17

Câu hỏi 46: 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?

  • 31, 19, 36, 20, 41, 17, 32
  • 31, 36, 41, 32, 19, 20, 17
  • 41, 32, 36, 20, 17, 19, 31
  • 41, 36, 32, 31, 20, 19, 17

Câu hỏi 47: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LNR là:

  • 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
  • 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
  • 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
  • 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 48: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LNR là:

  • 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
  • 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
  • 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
  • 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 49: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LNR là:

  • ✅ 6, 8, 11, 14, 16, 30, 31, 33, 36, 46

Câu hỏi 50: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LNR là:

  • ✅ 6, 8, 11, 14, 16, 30, 31, 33, 36, 46

Câu hỏi 51: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LRN là:

  • 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
  • 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
  • 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
  • 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 52: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LRN là:

  • 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
  • 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
  • 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
  • 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 53: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LRN là:

  • ✅ 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 54: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LRN là:

  • ✅ 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 55: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự RNL là:

  • 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
  • 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
  • 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
  • 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 56: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự RNL là:

  • 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
  • 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
  • 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
  • 8, 6, 14, 16, 11, 33, 31, 46, 36, 30

Câu hỏi 57: Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự RNL là:

  • ✅ 46, 36, 33, 31, 30, 16, 14, 11, 8, 6

Câu hỏi 58: Cho cây NPTK, chọn biểu thức tương ứng với cây:

  • (3+4)*((8-2)*6)
  • (3+4)*(8-2*6)
  • (3+4*8-2*6)

Câu hỏi 59: Cho cây NPTK, chọn biểu thức tương ứng với cây:

  • (3+4)*((8-2)*6)
  • (3+4)*(8-2*6)
  • (3+4*8-2*6)

Câu hỏi 60: Cho cây NPTK, chọn biểu thức tương ứng với cây:

  • ✅ (3+4)*((8-2)*6)

Câu hỏi 61: 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);}}

  • ✅ 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 hỏi 62: Cho Danh sách liên kết đơn chứa danh sách Cán Bộ (CB), Đoạn mã sau đây thực hiện gì?void InDSCanBo (List 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);}}

  • ✅ In đầy đủ thông tin tất cả các cán bộ đang chứa trong danh sách Q

Câu hỏi 63: 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

  • 1, 2, 3, 5, 7, 9, 15, 10
  • 1, 2, 3, 5, 9, 7, 15, 10
  • 1, 2, 3,7,9, 5, 15, 10
  • 1, 2, 5, 7, 9, 3, 15, 10

Câu hỏi 64: 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ì?

  • ✅ L=0; R=7; x=3;

Câu hỏi 65: 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ì?

  • L=0; R=7; x=3;
  • L=0; R=8; x=9;
  • L=1; R=7; x=3;

Câu hỏi 66: 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?

  • 23, 78, 45, 8, 32, 56
  • 8, 23, 32, 78, 56, 45
  • 8, 23, 45, 78, 32, 56
  • 8, 23, 78, 45, 32, 56

Câu hỏi 67: 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 3 lần lặp thì kết quả của dãy là thế nào?

  • 23, 78, 45, 8, 32, 56
  • 8, 23, 32, 78, 45, 56
  • 8, 23, 32, 78, 56, 45
  • 8, 23, 78, 45, 32, 56

Câu hỏi 68: 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?

  • 23, 78, 45, 8, 32, 56
  • 8, 23, 32, 45, 56, 78
  • 8, 23, 32, 78, 56, 45
  • 8, 23, 78, 45, 32, 56

Câu hỏi 69: 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?

  • 11, 23, 42, 65, 74, 58
  • 11, 23, 42, 74, 58, 65
  • 11, 23, 58, 65, 42, 74
  • 23, 42, 74, 11, 65, 58

Câu hỏi 70: 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 3 lần lặp kết quả của dãy là thế nào?

  • 11, 23, 42, 65, 74, 58
  • 11, 23, 42, 74, 58, 65
  • 11, 23, 42, 74, 65, 58
  • 11, 23, 58, 65, 42, 74

Câu hỏi 71: 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?

  • 11, 23, 42, 58, 65, 74
  • 11, 23, 42, 65, 58, 74
  • 11, 23, 42, 74, 58, 65
  • 11, 23, 58, 65, 42, 74

Câu hỏi 72: 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?

  • 11, 23, 42, 58, 65, 74
  • 11, 23, 42, 58, 74, 65
  • 11, 23, 42, 65, 58, 74
  • 11, 23, 42, 74, 65, 58

Câu hỏi 73: 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 1 lần lặp kết quả của dãy là thế nào?

  • 11, 23, 42, 58, 65, 74
  • 11, 23, 42, 58, 74, 65
  • 11, 42, 23, 74, 58, 65
  • 42, 23, 74, 11, 65, 58

Câu hỏi 74: 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?

  • 11, 23, 42, 58, 65, 74
  • 11, 23, 58, 42, 65, 74
  • 11, 23, 58, 42, 74, 65
  • 42, 23, 74, 11, 65, 58

Câu hỏi 75: 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[middle] = 11
  • a[middle] = 23
  • a[middle] = 74
  • Các đáp án đưa ra đều không đúng

Câu hỏi 76: 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 ):

  • 16, 17, 19, 18, 31, 32, 43, 40, 35, 30
  • 30, 18, 17, 16, 19, 35, 32, 31, 40, 43
  • 30, 18, 35, 17, 40, 16, 32, 31, 43, 19
  • 30, 35, 40, 43, 32, 31, 18, 19, 17, 16

Câu hỏi 77: 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):

  • 16, 17, 18, 19, 30, 31, 32, 35, 40, 43
  • 30, 18, 17, 16, 19, 35, 32, 31, 40, 43
  • 30, 18, 35, 17, 40, 16, 32, 31, 43, 19
  • 30, 35, 40, 43, 32, 31, 18, 19, 17, 16

Câu hỏi 78: 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):

  • 16, 17, 19, 18, 31, 32, 43, 40, 35, 30
  • 30, 18, 35, 17, 40, 16, 32, 31, 43, 19
  • 30, 35, 40, 43, 32, 31, 18, 19, 17, 16
  • 43, 40, 35, 32, 31, 30, 19, 18, 17, 16

Câu hỏi 79: Cho đồ thị G = <V,E> dưới dạng ma trận trọng số. Hãy cho biết đâu là tập cạnh của cây khung nhỏ nhất được xây dựng theo thuật toán Kruskal

  • T={ (2, 3), (1, 3), (4, 5), (4, 6), (3, 5) }
  • T={(1, 2), (1, 4), (2, 3), (2, 6), (6, 3), (6, 7)}
  • T={(1, 2), (1, 4), (2, 3), (4, 5), (2, 6), (6, 7)}
  • T={(1, 2), (1, 4), (2, 4), (2, 6), (4, 5), (6, 7)}

Câu hỏi 80: Cho đồ thị sau:

Cho biết ma trận kề biểu diễn đồ thị trên là gì?

Câu hỏi 81: Cho đồ thị sau:

Cho biết ma trận trọng số biểu diễn đồ thị trên là gì?

Câu hỏi 82: 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

  • T = { (1, 2), (1, 4), (2, 4), (2, 6), (4, 5), (6, 7) }
  • T = { (1, 4), (4, 3), (1, 2), (4, 5), (2, 6), (6,7) }
  • T={(1, 2), (1, 4), (1, 3), (2, 6), (4, 5), (6,7 )}
  • T={(1, 2), (1, 4), (2, 3), (2, 6), (6, 3), (6, 7)}

Câu hỏi 83: 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

  • ✅ 5
  • 6
  • 4
  • 3

Câu hỏi 84: Cho đồ thị vô hướng như hình vẽ. Đỉnh nào dưới đây là đỉnh cô lập của đồ thị

  • ✅ Đỉnh f
  • Đỉnh a
  • Đỉnh b
  • Đỉnh d

Câu hỏi 85: Cho đồ thị vô hướng như hình vẽ. Đỉnh nào dưới đây là đỉnh treo của đồ thị:

  • Đỉnh a
  • Đỉnh b
  • Đỉnh d
  • Đỉnh f

Câu hỏi 88: 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à?

  • Các đáp án đều sai
  • DQ.Head -> next = NULL;
  • DQ.Head -> pre = NULL;
  • DQ.Head -> pre = NULL;DQ.Head -> next= NULL;

Câu hỏi 89: 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) p -> pre = new_element;if (q == DQ.Tail) …[1]…}elseAddFirst( DQ, new_element);}Đoạn lệnh nào được điền vào [1] cho đúng?

  • ✅ DQ.Tail = new_element;

Câu hỏi 90: 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;}elseAddFirst( DQ, new_element);}Đoạn lệnh nào được điền vào [1] cho đúng?

  • new_element = p -> pre;
  • p -> next = new_element;
  • p -> pre = new_element;
  • p -> pre = NULL;

Câu hỏi 91: Cho đoạn chương trình sau:void RemoveTail ( DLIST &DQ ){     DNode *p;if ( DQ.Tail != NULL) {p = DQ.Tail; ..(1)..free(p);if ( DQ.Head == NULL)   DQ.Tail = NULL;else DQ.Head ->pre = NULL;} }

  • DQ.Head = DQ.Tail -> pre;DQ.Tail -> next = NULL;
  • DQ.Tail -> next = NULL;
  • DQ.Tail = DQ.Tail -> next;DQ.Tail -> next = NULL;
  • DQ.Tail = DQ.Tail -> pre;DQ.Tail -> next = NULL;

Câu hỏi 92: 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

  • QuickSort(a,i,R);QuickSort(a,L,j);
  • QuickSort(a,j,L);QuickSort(a,i,R);
  • QuickSort(a,L,j);QuickSort(a,i,R);
  • QuickSort(a,L,j);QuickSort(a,R,i);

Câu hỏi 93: 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

  • i=0; j=n-1;
  • i=0; j=R;
  • i=L; j=n-1;
  • i=L; j=R;

Câu hỏi 94: 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[(L+R)/2]
  • a[(L+R)]
  • a[(L-R)/2]
  • a[R/2]

Câu hỏi 95: 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]

  • LRN ( Root -> Left );
  • LRN ( Root -> Right );
  • NLR ( Root -> Left );
  • NLR ( Root -> Right );

Câu hỏi 96: 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

  • Tính (n-1)!
  • Tính n!
  • Tính tổng các giá trị 1*1*2*3*…*n
  • Tính tổng các giá trị 1+2+3+…+n

Câu hỏi 97: 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);

  • Green
  • Red
  • Tất cả các phương án đều sai
  • Yellow

Câu hỏi 98: 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);

  • Green
  • Red
  • Tất cả các phương án đều sai
  • Yellow

Câu hỏi 99: 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);

  • Green
  • Red
  • Tất cả các phương án đều đúng
  • Yellow

Câu hỏi 100: 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);

  • Green
  • Red
  • Tất cả các phương án đều đúng
  • Yellow

Câu hỏi 101: 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ì?

  • ✅ Danh sách liên kết đôi

Câu hỏi 102: 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ì?

  • ✅ Danh sách liên kết đơn

Câu hỏi 103: Cho đoạn mã saustack 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ì?

  • 1
  • 2
  • 3
  • 4

Câu hỏi 104: Cho đoạn mã saustack 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ì?

  • 1
  • 2
  • 3
  • 4

Câu hỏi 105: Cho đoạn mã saustack 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ì?

  • 1, 2, 3
  • 1, 2, 3, 4
  • 1, 3, 5
  • 2, 3, 4, 5

Câu hỏi 106: Cho đoạn mã saustack 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ì?

  • 1, 2, 3, 4, 5
  • 1, 3, 5
  • 2, 4, 5
  • 5, 4, 3, 2, 1

Câu hỏi 107: 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 + 1Bước 3: Nếu left <= right và quay lại bước 2 để tìm kiếm tiếpNgược lại thông báo không tìm thấy và dừng thuật toán

  • Các đáp án đưa ra đều sai
  • Các đáp án trên đều đúng
  • Mô tả thuật toán tìm kiếm nhị phân
  • Mô tả thuật toán tìm kiếm tuyến tính

Câu hỏi 108: Cho G =<V,E> là đồ thị vô hướng liên thông n đỉnh. T =<V, H> được gọi là cây khung của đồ thị nếu:

  • T liên thông không có chu trình và H E
  • T liên thông và có đúng n-1 cạnh.
  • T liên thông và không có chu trình.
  • T liên thông và mỗi cạnh của nó đều là cầu;

Câu hỏi 109: 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

  • Hàm luôn luôn trả về vị trí phần tử cuối cùng có giá trị bằng x
  • 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
  • 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
  • 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

Câu hỏi 110: 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 đó.

  • ✅ 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âu hỏi 111: Cho khai báo cấu trúc đồ thị dạng danh sách cạnh như sau:struct Canh{int dd,dc;float ts;};struct DoThiCanh{int m;Canh ds[max];};Đâu là đoạn mã để liệt kê các đỉnh kề của một đỉnh k nào đó trong đồ thị

  • ✅ void XuLy(DoThiCanh G,int k){int i;printf(“\n Cac dinh ke cua dinh %d la:”,k);for(i=1;i<=G.m;i++){if(G.ds[i].dd == k)printf(“%7d”,G.ds[i].dc);if(G.ds[i].dc == k)printf(“%7d”,G.ds[i].dd);}}

Câu hỏi 112: Cho khai báo cấu trúc đồ thị dạng danh sách cạnh như sau:struct Canh{int dd,dc;float ts;};struct DoThiCanh{int m;Canh ds[max];};Đâu là đoạn mã để liệt kê danh sách tất cả các cạnh hiện có của đồ thị

  • ✅ void XuLy(DoThiCanh G){printf(“\n Danh sach canh la: \n”);for(int i = 1; i<=G.m; i++)printf(“\n %d -> %d: %7.1f”,G.ds[i].dd,G.ds[i].dc, G.ds[i].ts);}

Câu hỏi 113: 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”); }}

  • ✅ In ma trận trọng số của đồ thị

Câu hỏi 114: 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ị

  • ✅ 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âu hỏi 115: 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ị

  • ✅ 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âu hỏi 116: 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;}

  • ✅ 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 hỏi 117: Cho khai báo cấu trúc 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;};Đoạn mã sau đây thực hiện yêu cầu xử lý gì?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;}

  • ✅ 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âu hỏi 118: 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;}

  • ✅ Khởi tạo hàng đợi rỗng

Câu hỏi 119: Cho khai báo CTDL như sau:struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,thanhtien;};struct Node{ CB info; struct Node *next;};struct List{ Node *head, *tail;};Đâu là đoạn mã tính tổng tiền lương của các CanBo trong DSLK đơn.

  • ✅ float TinhTongLuong (List Q){ Node *p; float s = 0; for(p=Q.Head; p!=NULL; p=p->next) s = s + p->info.thanhtien;return s;}

Câu hỏi 120: 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

  • ✅ 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;}

Câu hỏi 121: 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

  • ✅ 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);}}

Câu hỏi 122: 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ã để 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.

  • ✅ void InDSCanBo (List 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âu hỏi 123: 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);

  • ✅ 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 hỏi 124: 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);

  • ✅ 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 hỏi 125: 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?

  • ✅ 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 hỏi 126: 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));

  • ✅ BlueGreen

Câu hỏi 127: Cho khai báo Stack như sau:struct Stack{int topint nut[max];};Cho biết phần tử đỉnh hiện tại của Stack là bao 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]);

  • ✅ 8

Câu hỏi 128: Cho khai báo Stack như sau:struct Stack{int topint 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]);

  • ✅ 4

Câu hỏi 129: Cho khai báo Stack như sau:struct Stack{int topint 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;}

  • ✅ Trả lại giá trị của phần tử đỉnh hiện tại của Stack

Câu hỏi 130: Cho khai báo Stack như sau:struct Stack{int topint 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;}}

  • ✅ Chèn thêm phần tử mới vào đỉnh của Stack

Câu hỏi 131: 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 3Bướ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

  • Đếm số phần tử có giá trị bằng phần tử đầu tiên trong mảng
  • Đếm số phần tử có giá trị bằng x trong mảng
  • Đếm số phần tử trong mảng đầu tiên trong mảng
  • Tìm kiếm tuyến tính phần tử mang giá trị x trong mảng

Câu hỏi 132: Cho mảng a gồm các phẩn tử có giá trị như sau:1356Số 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à:

  • 4
  • 5
  • 6
  • 7

Câu hỏi 133: Cho mảng a gồm các phẩn tử có giá trị như sau:3126Số 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à:

  • 2
  • 3
  • 4
  • 5

Câu hỏi 134: Cho mảng a gồm các phẩn tử có giá trị như sau:3126Số 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à:

  • 2
  • 3
  • 4
  • 5

Câu hỏi 135: Cho mảng a gồm các phẩn tử có giá trị như sau:3126Số 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à:

  • 2
  • 3
  • 4
  • 5

Câu hỏi 136: Cho mảng a gồm các phẩn tử có giá trị như sau:74326Số 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à:

  • 2
  • 3
  • 4
  • 5

Câu hỏi 137: 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.

  • ✅ 2 3 4 6 7 8

Câu hỏi 138: 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.

  • ✅ 3 6 7 8 4 2

Câu hỏi 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=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);}}

  • ✅ 6741

Câu hỏi 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);}}

  • ✅ 110202

Câu hỏi 141: 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 đơn để lưu trữ danh sách Hang Hoa

  • ✅ struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next;};struct List{ Node *head, *tail;};

Câu hỏi 142: 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

  • ✅ struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next, *pre;};struct List{ Node *head, *tail;};

Câu hỏi 143: 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

  • ✅ void SXDSSV( int n, SV ds[]){ int max, i, j; SV tg; for( i=0 ; i ds[max].DTB ) max = j; if(max!= i ) { tg = ds[max]; ds[max] = ds[i]; ds[i] = tg; } }}

Câu hỏi 144: 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

  • ✅ void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i

Câu hỏi 145: 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

  • ✅ void SXDSSV( int n, SV ds[]){ int min, i, j; SV tg; for( i=0 ; i

Câu hỏi 146: 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 đúng nhất cho hàm Swap:

  • void Swap( floatX, float Y){int Temp = X;X=Y;Y = Temp;return ;}
  • void Swap( int &X, int &Y){int Temp = X;X=Y;Y = Temp;return ;}
  • void Swap( int *X, int *Y){int Temp = X;X=Y;Y = Temp;return ;}
  • void Swap( int X, int Y){int Temp = X;X=Y;Y = Temp;return ;}

Câu hỏi 147: 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+1k++;if (k<N) return k;return -1;}Chọn 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:

  • Số phép gán: Gmax = 1 Số phép so sánh: Smax = N + 2
  • Số phép gán: Gmax = 2 Số phép so sánh: Smax = N + 2
  • Số phép gán: Gmax = 2 Số phép so sánh: Smax = N + 1
  • Số phép gán: Gmax = 2 Số phép so sánh: Smax = 2N + 2

Câu hỏi 148: Cho thuật toán sau:int LinenearSearch( int M[], int N, int X){int k = 0;while (M[k] !=X && k<N)k++;if (k<N) return k;return -1;}Chọn 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:

  • Số phép gán: Gmax = 1 Số phép so sánh: Smax = 2N + 1
  • Số phép gán: Gmax = 1 Số phép so sánh: Smax = 2N + 2
  • Số phép gán: Gmax = 1 Số phép so sánh: Smax = N + 2
  • Số phép gán: Gmax = 2 Số phép so sánh: Smax = 2N + 1

Câu hỏi 149: 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 đú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:

  • Số phép gán: Gmin = 0 Số phép so sánh: Smin = 2
  • Số phép gán: Gmin = 2 Số phép so sánh: Smin = 2
  • Số phép gán: Gmin = 2 Số phép so sán: Smin = 3
  • Số phép gán: Gmin = 3 Số phép so sánh: Smin = 2

Câu hỏi 150: Danh sách được cài đặt bằng cách nào:

  • Cả hai đáp án đều đúng
  • Cả hai đáp án đều sai
  • Cài đặt bằng danh sách liên kết
  • Cài đặt bằng mảng

Câu hỏi 151: Danh sách liên kết là gì?

  • Cả hai phát biểu đều đúng
  • Cả hai phát biểu đều sai
  • 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.
  • 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.

Câu hỏi 152: Đâu là công thức tổng quát để tính giai thừa dựa vào giải thuật đệ quy

  • ✅ Giaithua = n* Giaithua(n-1)

Câu hỏi 153: Đâu là công thức tổng quát để tính giai thừa dựa vào giải thuật đệ quy

  • Giaithua = (n-1)* Giaithua
  • Giaithua = n* Giaithua(n+1)
  • Giaithua = n* Giaithua(n-1)
  • Giaithua = n* Giaithua

Câu hỏi 154: Đâu là định nghĩa của Hàng đợi

  • Cả hai đáp án đều đúng
  • Cả hai đáp án đều sai
  • 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
  • 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 hỏi 155: Đâu là định nghĩa của Ngăn xếp

  • Cả hai đáp án đều đúng
  • Cả hai đáp án đều sai
  • 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
  • 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 hỏi 156: Đâ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”

  • Cả hai lựa chọn đều đúng
  • Cả hai lựa chọn đều sai
  • Không gian
  • Thời gian

Câu hỏi 157: Đâ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”

  • Cả hai lựa chọn đều đúng
  • Cả hai lựa chọn đều sai
  • Không gian
  • Thời gian

Câu hỏi 158: Để 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:

  • 2 phương án
  • 3 phương án
  • 4 phương án
  • 5 phương án

Câu hỏi 159: Để 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?

  • ✅ Hoán vị nội dung của phần tử

Câu hỏi 160: Để 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?

  • Cả hai phương án trên đều đúng
  • Hoán vị nội dung của phần tử
  • Tất cả các đáp án đều sai
  • Thay đổi mối liên kết của phần tử

Câu hỏi 161: Để 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?

  • conio.h
  • stdio.h
  • stdlib.h
  • string.h

Câu hỏi 162: Để 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ì?

  • Cả ba phát biểu đều đúng
  • Tìm kiếm nhị phân
  • Tìm kiếm tuyến tính
  • Tìm kiếm tuyến tính và tìm kiếm nhị phân

Câu hỏi 163: Để 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ì?

  • Tất cả các đáp án đều đúng
  • Tìm kiếm nhị phân
  • Tìm kiếm tuyến tính
  • Tìm kiếm tuyến tính và tìm kiếm nhị phân

Câu hỏi 164: Để tính biểu thức s = ½ + ¼ + … + 1/(2n) với n>=1 ta chọn hàm

  • float F( int n ){if (n ==1 )return 1.0/2;elsereturn 1.0/(2*n) + F(n-1);}
  • float F( int n ){if (n ==1 )return 1.0/2;elsereturn 1.0/(2*n) + F1(n-1);}
  • float F( int n ){if (n ==1 )return 1.0/2;elsereturn 1.0/2*n + F(n-1);}
  • float F( int n ){if (n ==1 )return 1.0/2;elsereturn 1.0/n + F(n-1);}

Câu hỏi 165: Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm

  • ✅ float F(int n){if (n==1)return 1.0/2;elsereturn (float)n/(n+1) + F(n-1);}

Câu hỏi 166: Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm

  • float F(int n){if (n==1)return 1.0/2;elsereturn (float)(n+1)/(n+1) + F(n-1);}
  • float F(int n){if (n==1)return 1.0/2;elsereturn (float)n/ + F(n-1);}
  • float F(int n){if (n==1)return 1.0/2;elsereturn (float)n/(n+1) + F(n-1);}
  • float F(int n){if (n==1)return 1.0/2;elsereturn (float)n/(n+1) + F;}

Câu hỏi 167: Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm

  • ✅ float F(int n){if (n==1)return 1.0/2;elsereturn (float)n/(n+1) + F (n-1);}

Câu hỏi 168: Để tính biểu thức s = xn với n>=0 ta chọn hàm

  • long F(int x, int n){if (n==0)return 1;elsereturn x*F(x,n);}
  • long F(int x, int n){if (n==0)return 1;elsereturn x*F(x,n-1);}
  • long F(int x, int n){if (n==0)return 1;elsereturn x*x*F(x,n-1);}
  • long F(int x, int n){if (n==1)return 1;elsereturn x*F(x,n-1);}

Câu hỏi 169: Để xác định giải thuật đệ quy cần xác định gì?

  • Cả hai lựa chọn đều đúng
  • Cả hai lựa chọn đều sai
  • Công thức tổng quát
  • Phần tử neo

Câu hỏi 170: Đị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ả

  • ✅ Vùng liên kết quản lý địa chỉ phần tử kế tiếp

Câu hỏi 171: Đị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ả

  • Con trỏ trỏ tới phần dữ liệu
  • Con trỏ trỏ tới phần dữ liệu cuối của danh sách
  • Vùng liên kết quản lý địa chỉ phần tử kế tiếp
  • 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 hỏi 172: Định nghĩa nào đúng với danh sách liên kết

  • Danh sách liên kết là cấu trúc dữ liệu dạng cây
  • Danh sách liên kết là cấu trúc dữ liệu tự định nghĩa
  • 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ớ
  • 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âu hỏi 173: Độ phức tạp thuật toán được đánh giá có loại nào?

  • Cả hai loại được liệt kê
  • Độ phức tạp không gian
  • Độ phức tạp thời gian
  • Không phải các loại liệt kê

Câu hỏi 174: Đồ thị vô hướng G = <V,E> gồm n đỉnh và mỗi đỉnh có số bậc là 6 thì có bao nhiêu cạnh

  • 2n cạnh
  • 3n cạnh
  • 6n cạnh
  • N cạnh

Câu hỏi 175: Đ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].

  • Q.Head = new_element;Q.Tail = Q.Head;
  • Q.Head = Q.Head;Q.Tail = new_element;
  • Q.Tail = NULL;Q.Head = NULL;
  • Q.Tail = Q.Head;Q.Head = new_element;

Câu hỏi 176: Đ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].

  • new_element -> next = NULL;Q.Head -> next = new_element;
  • new_element -> next = Q.Head;Q.Head -> next = new_element;
  • new_element -> next = Q.Head;Q.Head = new_element;
  • Q.Head = new_element;new_element -> next = Q.Head;

Câu hỏi 177: Đ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:

  • 0 và n-1
  • 1 và n
  • n và 1
  • n-1 và 0

Câu hỏi 178: Đ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]:

  • p -> next = q -> next;
  • p = q;
  • q -> next = p -> next;
  • q = p;

Câu hỏi 179: Đ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]:

  • Q.Head -> next = NULL;
  • Q.Head -> next = Q.Head;
  • Q.Head = NULL;
  • Q.Head = Q.Head -> next;

Câu hỏi 180: Đ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ỗ …………..

  • p = (Node*)malloc(Node));
  • p = (Node*)malloc(sizeof(Node));
  • p = malloc(Node);
  • p = malloc(sizeof(Node));

Câu hỏi 181: Đ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ỗ …………..

  • data
  • infor
  • link
  • next

Câu hỏi 182: Đ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ỗ ………….

  • # link
  • data
  • infor#
  • next

Câu hỏi 183: Đ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ỗ …………..

  • 0
  • Data
  • NULL
  • x

Câu hỏi 184: Đ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ỗ …………..

  • data
  • infor
  • link
  • next

Câu hỏi 185: Đ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

  • Tất cả các lựa chọn trên đều sai
  • Tìm kiếm nhị phân phần tử có giá trị X
  • Tìm kiếm tuyến tính phần tử X trong mảng
  • Tìm phần tử nhỏ nhất của mảng M gồm N phần tử

Câu hỏi 186: Đ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ì

  • ✅ NULL
  • Các đáp án đều sai
  • NILL
  • O

Câu hỏi 187: Đ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ì

  • Không phải các đáp án trên
  • NILL
  • NULL
  • O

Câu hỏi 188: Đ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

  • ✅ 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 hỏi 189: Đ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

  • ✅ Selection Sort

Câu hỏi 190: Đoạn mã sau đây sử dụng thuật toán Sắp xếp 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].DTB>x.DTB)) { ds[pos+1] = ds[pos]; pos–; } ds[pos+1] = x; //chèn x vào dãy }}

  • ✅ Insertion Sort

Câu hỏi 191: Đ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 }}

  • ✅ 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 hỏi 192: Đ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;}

  • ✅ 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âu hỏi 193: Đoạn mô tả này thuộc thuật toán nào:Bước 1: i = 0Bước 2: tính các giá trị j = i + 1Bước 3: Trong khi j

  • Sắp xếp chèn trực tiếp.
  • Sắp xếp đổi chỗ trực tiếp
  • Tìm kiếm nhị phân
  • Tìm kiếm tuyến tính

Câu hỏi 194: Đố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 20Cầ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

  • 10 lần
  • 7 lần
  • 8 lần
  • 9 lần

Câu hỏi 195: 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 98Cầ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:

  • 10 lần
  • 7 lần
  • 8 lần
  • 9 lần

Câu hỏi 196: Giả sử T = <V,E> là đồ thị n đỉnh. Khẳng định nào không tương đương với các khẳng định còn lại

  • T có đúng một chu trình n-1 cạnh
  • T liên thông không có chu trình
  • T liên thông và có đúng n-1 cạnh
  • T liên thông và mỗi cạnh của nó đều là cầu

Câu hỏi 197: 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

  • for( j = N; j< i; j–)
  • for( j = N-1; j>i; j–)
  • for( j = N-1; j>i; j++)
  • 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 hỏi 198: Hàng đợi còn được gọi là danh sách

  • Cả hai đáp án đều đúng
  • Cả hai đáp án đều sai
  • FIFO
  • LIFO

Câu hỏi 199: Hãy cho biết đồ thị nào đưới đây là một cây

  • Phương án A
  • Phương án B
  • Phương án C
  • Phương án D

Câu hỏi 200: Kết quả của đoạn mã sau là gì?void main(){char st[20]= “ABC”;int i;stack *s;InitStack(s);for (int i=0; i<strlen(st); i++)Push( s, st[i]);printf(“\n Ket qua:”);while (!isEmpty(s)) printf(“%c”, Pop(s));}

  • ✅ CBA

Câu hỏi 201: Lựa chọn câu đúng nhất về danh sách liên kết đôi.

  • ✅ 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âu hỏi 202: Lựa chọn phương án trả lời đúng nhất cho biết hình ảnh sau là gì?

  • ✅ Cây nhị phân tìm kiếm
  • Cây 2-3-4
  • Cây nhị phân
  • Cây tổng quát

Câu hỏi 203: Ma trận kề của đồ thị có hướng G = <V,E>

  • Là ma trận đối xứng
  • Là ma trận đơn vị
  • Là ma trận đường chéo trên
  • Là ma trận không đối xứng

Câu hỏi 204: Ma trận kề của đồ thị vô hướng G =<V, E> có tính chất

  • ✅ Là ma trận đối xứng

Câu hỏi 205: Ma trận kề nào dưới đây biểu diễn đúng của đồ thị trong số đã cho trong hình vẽ

Câu hỏi 206: Mỗi nút trong danh sách đơn gồm có mấy phần:

  • 2 phần
  • 3 phần
  • 4 phần
  • 5 phần

Câu hỏi 207: 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

  • Cả hai thành phần
  • Cấu trúc dữ liệu
  • Không phải là các thành phần
  • Thuật toán

Câu hỏi 208: Ngăn xếp còn được gọi là danh sách

  • Cả hai đáp án đều đúng
  • Cả hai đáp án đều sai
  • FIFO
  • LIFO

Câu hỏi 209: 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ì?

  • Cả hai phát biểu đều đúng
  • Cả hai phát biểu đều sai
  • là phần tử lớn nhất trong số các phần tử bên nhánh trái
  • là phần tử nhỏ nhất trong số các phần tử bên nhánh phải

Câu hỏi 210: Phương pháp duyệt NLR là phương pháp duyệt gì?

  • Cả 3 lựa chọn đều đúng
  • Left – Node – Righ
  • Left – Right – Node
  • Node – Left – Right

Câu hỏi 211: Ta gọi đỉnh v là đỉnh cô lập trong đồ thị vô hướng G = <V, E>

  • ✅ Nếu bậc của đỉnh v là 0

Câu hỏi 212: Ta gọi đỉnh v là đỉnh treo trong đồ thị vô hướng G = <V, E>

  • ✅ Nếu bậc của đỉnh v là 1

Câu hỏi 213: 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?

  • ✅ Phần tử mới được bổ sung vào nhánh trái của nút đang xét

Câu hỏi 214: 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

  • for ( k =0; k<n-1; k–)
  • for ( k =0; k<n-1; k++)
  • for ( k =n; k>0; k–)
  • for ( k =n-1; k>0; k–)

Câu hỏi 215: Thuật toán được biểu diễn bằng cách nào

  • Giả mã
  • Liệt kê từng bước
  • Sơ đồ khối
  • Tất cả các cách được liệt kê

Câu hỏi 216: Tổ chức của danh sách liên kết kép gồm có mấy thành phần:

  • 2 thành phần
  • 3 thành phần
  • 4 thành phần
  • 5 thành phần

Câu hỏi 217: Tổng các phần tử hàng i, cột j của ma trận kề đồ thị có hướng G =<V,E> đúng bằng:

  • Bán đỉnh bậc ra của đỉnh i, bán đỉnh bậc ra đỉnh j.
  • Bán đỉnh bậc ra của đỉnh i, bán đỉnh bậc vào đỉnh j.
  • Bán đỉnh bậc vào của đỉnh i, bán đỉnh bậc ra đỉnh j
  • Bán đỉnh bậc vào của đỉnh i, bán đỉnh bậc vào đỉnh j.

Câu hỏi 218: 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

  • ✅ Bậc của đỉnh i, đỉnh j

Câu hỏi 219: 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

  • ✅ Cả ba phương án đều sai

Câu hỏi 220: Tổng các phần tử trên một hàng hoặc của một cột trong ma trận kề của đồ thị vô hướng G = <V,E> đúng bằng

  • Hai lần số cạnh của đồ thị
  • Một nửa số cạnh của đồ thị
  • Số cạnh liên thuộc với đỉnh của cột hoặc hàng đó
  • Tổng bán đỉnh bậc ra của tất cả các đỉnh

Câu hỏi 221: Trong đồ thị vô hướng, số đỉnh bậc lẻ là một số

  • Chia hết cho 2
  • Chia hết cho 3
  • Chính phương
  • Số lẻ

Câu hỏi 222: 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?

  • Cả hai lựa chọn đều đúng
  • Cả hai lựa chọn đều sai
  • Công thức tổng quát
  • Phần tử neo

Câu hỏi 223: 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ì?

  • Cả hai phát biểu trên đều đúng
  • Cả hai phát biểu trên đều sai
  • Để 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
  • Để lưu trữ hay mô tả thông tin được lưu trữ trong nút của danh sách

Câu hỏi 224: Ứng dụng cơ bản của ngăn xếp gồm

  • Chuyển đổi cơ số
  • Đảo ngược xâu ký tự
  • Tất cả các phương án đều đúng
  • Tính giá trị biểu thức

Câu hỏi 225: 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]:

  • Q.Head -> next = NULL;
  • Q.Head -> next = Q.Head;
  • Q.Head = NULL;
  • Q.Head = Q.Head -> next;