Cấu trúc dữ liệu và giải thuật - IT05 (255)

Câu hỏi 83251:

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. 7
B. 6
C. 4
D. 5

Câu hỏi 83250:

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 hỏi 83249:

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:

A. Số phép gán: Gmin = 3 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 = 0 Số phép so sánh: Smin = 2
D. Số phép gán: Gmin = 2 Số phép so sánh: Smin = 2

Câu hỏi 83248:

Đ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ị 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 hỏi 83247:

Đ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 }}

A. Quick Sort
B. Interchange Sort
C. Selection Sort
D. Insertion Sort

Câu hỏi 83246:

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, 74, 65, 58
B. 11, 23, 42, 65, 58, 74
C. 11, 23, 42, 58, 65, 74
D. 11, 23, 42, 58, 74, 65

Câu hỏi 83245:

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 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 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; } }}
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 hỏi 170812:

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. 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
C. 8, 6, 14, 16, 11, 33, 31, 46, 36, 30
D. 30, 11, 6, 8, 16, 14, 36, 31, 33, 46

Câu hỏi 170809:

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 6 7 8 9 10 11
B. Duyet cay : 8 6 10 4 9 7 11
C. Duyet cay : 8 6 4 7 10 9 11
D. Duyet cay : 4 7 6 9 11 10 8

Câu hỏi 170808:

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 -> Right );
B. LRN ( Root -> Left );
C. NLR ( Root -> Right );
D. NLR ( Root -> Left );

Câu hỏi 170805:

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

A. 3
B. 42
C. 5
D. 10

Câu hỏi 170796:

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, 3, 5
B. 1, 2, 3, 4, 5
C. 2, 4, 5
D. 5, 4, 3, 2, 1

Câu hỏi 170795:

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

Câu hỏi 170770:

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 hỏi 170768:

Ứng dụng cơ bản của ngăn xếp gồm

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

Câu hỏi 170767:

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. 6741
D. 0

Câu hỏi 170766:

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 hỏi 170764:

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. 2
C. 4
D. 1

Câu hỏi 170763:

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. 42
B. 5
C. 10
D. 3

Câu hỏi 170762:

Hàng đợi còn được gọi là danh sách

A. Cả hai đáp án đều đúng
B. Cả hai đáp án đều sai
C. FIFO
D. LIFO
Trung tâm giáo dục thể chất và quốc phòng an ninh
Khoa kinh tế
Khoa đào tạo từ xa
Trung tâm đào tạo trực tuyến
Khoa đào tạo cơ bản
Khoa điện - điện tử
Khoa du lịch
Khoa Công nghệ thông tin
Viện Công nghệ sinh học và Công nghệ thực phẩm
Trung tâm đại học Mở Hà Nội tại Đà Nẵng
Khoa tiếng Trung Quốc
Khoa tạo dáng công nghiệp
Khoa tài chính ngân hàng
Khoa Tiếng anh
Khoa Luật

Bản tin HOU-TV số 06 năm 2025

Tuyển sinh đại học Mở Hà Nội - HOU

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.