[Unable to find Component]

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

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 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 114199:

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:

A. void Swap( int *X, int *Y)
{
int Temp = X;
X=Y;
Y = Temp;
return ;
}
B. void Swap( int X, int Y)
{
int Temp = X;
X=Y;
Y = Temp;
return ;
}
C. void Swap( floatX, float 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 hỏi 114197:

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. 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. for( j = N; j< i; j--)
D. for( j = N-1; j>i; j--)


Câu hỏi 114195:

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

Câu hỏi 114194:

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?

A. 11, 23, 42, 74, 58, 65
B. 11, 23, 42, 65, 74, 58
C. 11, 23, 42, 74, 65, 58
D. 11, 23, 58, 65, 42, 74

Câu hỏi 114193:

Đ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ất cả các lựa chọn trên đều sai
D. Tìm phần tử nhỏ nhất của mảng M gồm N phần tử

Câu hỏi 114192:

Đ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 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 tăng 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 hỏi 114191:

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 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 }}
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 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; } }}
D. 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âu hỏi 114190:

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. Mô tả thuật toán tìm kiếm tuyến tính
C. Mô tả thuật toán tìm kiếm nhị phân
D. Các đáp án trên đều đúng

Câu hỏi 114189:

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 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 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 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 114188:

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. n và 0
B. 0 và n-1
C. n-1 và 0
D. 0 và n

Câu hỏi 114187:

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. right = midle + 1
B. right = middle - 1
C. left = middle - 1
D. left = middle + 1

Câu hỏi 114186:

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

Đ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. next
B. data
C. link
D. infor

Câu hỏi 305029:

Đ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 -> next = Q.Head;
B. Q.Head = NULL;
C. Q.Head -> next = NULL;
D. Q.Head = Q.Head -> next;

Câu hỏi 305028:

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

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

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
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 đôi

Câu hỏi 305025:

Đ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.Tail = NULL;
Q.Head = NULL;
C. Q.Head = new_element;
Q.Tail = Q.Head;
D. Q.Head = Q.Head;
Q.Tail = new_element;
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ố 07 năm 2026

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 retry or reload the page.