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 Chọn một câu trả lời a Cấu trúc dữ liệu b Thuật toán c Không phải là các thành phần d Cả hai thành phần Phản hồi Đáp án đúng là.
Trang 1Mộ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
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 1 – Đánh giá thuật toán, mục I, bản Text
Đâ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”
Trang 3Đ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; } }}
Chọn một câu trả lời:
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 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 giảm dần bằng thuật toán Insertion
Trang 4Tham khảo: Bài 2 – Tìm kiếm và sắp xếp – Mục II.1, Bản Hướng dẫn tự học.
Đ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 )
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
Trang 5c n và 1
d 1 và n
Phản hồi
Đáp án đúng là: B 0 và n-1
Tham khảo: Bài 2 – Tìm kiếm và sắp xếp – Mục I.2, Bản Hướng dẫn tự học
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)
Tham khảo: Bài 3 – Các thuật toán sắp xếp phần 2, Mục II, Bản Hướng dẫn tự học
** 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?
Chọn một câu trả lời:
a 74, 65, 58, 11, 23, 42
Trang 8Cho mảng a gồm các phẩn tử có giá trị như sau:
Tham khảo: Bài 3 – Các thuật toán sắp xếp phần 2, Mục II, Bản Hướng dẫn tự học
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?
Tham khảo: Bài 3 – Các thuật toán sắp xếp phần 2, Mục I, Bản Hướng dẫn tự học
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)
Trang 9for( int pos = K+1; pos<N; pos++)
if( Min > M[pos])
Trang 10Cho 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?
Tham khảo: Bài 3 – Các thuật toán sắp xếp phần 2, Mục II, Bản Hướng dẫn tự học
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 )
Trang 11Tham khảo: Bài 3 – Các thuật toán sắp xếp phần 2, Mục II, Bản Hướng dẫn tự học
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?
Tham khảo: Bài 3 – Các thuật toán sắp xếp phần 2, Mục I, Bản Hướng dẫn tự học
Cho các bước mô tả thuật toán như sau:
Nếu danh sách rỗng:
DQ.Head = new_element;
Trang 12DQ.Tail = DQ.Head;
Ngược lại (d/s khác rỗng):
new_element -> next = DQ.Head;
DQ.Head -> pre = new_element;
Đáp án đúng là: B Chèn vào đầu danh sách
Tham khảo: Bài 5 – Danh sách liên kết đôi, Hướng dẫn tự học
Tổ chức của danh sách liên kết kép gồm có mấy thành phần:
Trang 13Đáp án đúng là: B 3 thành phần
Tham khảo: Bài 5 – Danh sách liên kết đôi, Hướng dẫn tự học
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étnếu phần tử cần thêm vào lớn hơn thì được thêm vào vị trí nào?
Chọn một câu trả lời:
a Cả hai phát biểu trên đều đúng
b Cả hai phát biểu trên đều sai
c Phần tử mới được bổ sung vào nhánh phải của nút đang xét
d Phần tử mới được bổ sung vào nhánh trái của nút đang xét
Phản hồi
Đáp án đúng là: Phần tử mới được bổ sung vào nhánh trái của nút đang xét
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VI, bản Text
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VI, bản Text
Cho biết các nút có bậc bằng 2 trong hình ảnh sau:
Chọn một câu trả lời:
Trang 15Cho 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?
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VI, bản Text
Cho cây NPTK, chọn biểu thức tương ứng với cây:
Trang 16Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VII, bản Text
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?
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VI, bản Text
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 ):
Trang 17Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LRN (Left-Right-Node)?
Trang 18và 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ènthà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 đó
Chọn một câu trả lời:
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 void CreateTree(Tree &T)
c 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;}
d void LNR(Tree T){ if(T!=NULL) { LNR(T->Left); printf("%7d",T->key); LNR(T->Right); }}
Trang 19Đáp án đúng là: D Tiền tố, trung tố và hậu tố
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VII, bản Text
Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt NLR (Node-Left-Right)?
Trang 20a Là số nhánh con trái của nút đó
b Là số nhánh con phải của nút đó
c Là số nhánh con của nút đó
Trang 21d Là số nhánh con nhỏ nhất của nút con của nút đó
Phản hồi
Đáp án đúng là: C Là số nhánh con của nút đó
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục I, bản Text
Lựa chọn câu đúng nhất về danh sách liên kết đôi
c 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
d 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
Phản hồi
Đáp án đúng là: C 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
Tham khảo: Bài 5 – Danh sách liên kết đôi, Hướng dẫn tự học
Cho khai báo Stack như sau:
Trang 23b Chuyển đổi cơ số
c Tất cả các phương án đều sai
d Đảo ngược xâu ký dự
Phản hồi
Đáp án đúng là: C Tất cả các phương án đều sai
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 6 – Ngăn xếp và Hàng đợi, mục II, bản Text
Ứng dụng cơ bản của ngăn xếp gồm
Chọn một câu trả lời:
a Chuyển đổi cơ số
Trang 24b Đảo ngược xâu ký tự
c Tất cả các phương án đều đúng
d Tính giá trị biểu thức
Phản hồi
Đáp án đúng là: D Tất cả các phương án đều đúng
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 6 – Ngăn xếp và Hàng đợi, mục I, bản Text
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?
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục V, bản Text
Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LNR (Left-Node-Right)?
Trang 26Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VI, bản Text
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
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VI, bản Text
Phương pháp duyệt NLR là phương pháp duyệt gì?
Chọn một câu trả lời:
a Left - Right - Node
Trang 27b Left - Node - Righ
c Cả 3 lựa chọn đều đúng
d Node - Left - Right
Phản hồi
Đáp án đúng là: A Node - Left - Right
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 7 – Cây, mục VI, bản Text
Cho đồ thị vô hướng như hình vẽ Đỉnh nào dưới đây là đỉnh treo của đồ thị:
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 8 – Đồ thị, mục I, bản Text
Trong đồ thị vô hướng, số đỉnh bậc lẻ là một số
Chọn một câu trả lời:
Trang 28Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 8 – Đồ thị, mục I, bản Text
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:
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 8 – Đồ thị, mục I, bản Text
Ta gọi đỉnh v là đỉnh treo trong đồ thị vô hướng G = <V, E>
Chọn một câu trả lời:
a Nếu bậc của đỉnh v là một số chẵn
Trang 29Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 8 – Đồ thị, mục I, bản Text
Hãy cho biết đồ thị nào đưới đây là một cây
Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 8 – Đồ thị, mục IV.2, bản Text
Đ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:
Trang 30Node* get_node( Data x ){
Trang 31Đoạn lệnh được đưa vào (1) là?
Chọn một câu trả lời:
a DQ.Head -> pre = NULL;
DQ.Head -> next= NULL;
b DQ.Head -> pre = NULL;
c Các đáp án đều sai
d DQ.Head -> next = NULL;
Phản hồi
Đáp án đúng là: C DQ.Head -> pre = NULL;
Tham khảo: Bài 5 – Danh sách liên kết đôi, Hướng dẫn tự họcCho đoạn chương trình như sau:
void AddAfter(DLIST &DQ, DNode *q, DNode *new_element){
Trang 32c new_element = p -> pre;
d p -> next = new_element;
Phản hồi
Đáp án đúng là: D p -> pre = new_element;
Tham khảo: Bài 5 – Danh sách liên kết đôi, Hướng dẫn tự học
Đị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ả
Chọn một câu trả lời:
a Con trỏ trở tới phần dữ liệu
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 Vùng liên kết quản lý địa chỉ phần tử kế tiếp của phần tử cuối
Phản hồi
Đáp án đúng là: B Vùng liên kết quản lý địa chỉ phần tử kế tiếp
Tham khảo: Bài 5 – Danh sách liên kết đôi, Hướng dẫn tự học
Các hàm để giải phóng bộ nhớ là
Chọn một câu trả lời:
a calloc(), delete(), new(), free()
b malloc(), delete(), new(), free()
c delete(),free()
d malloc(), delete(), free()
Trang 33Phản hồi
Đáp án đúng là: B delete(),free()
Tham khảo: Bài 5 – Danh sách liên kết đôi, Hướng dẫn tự học
Cho khai báo Stack như sau:
Trang 34Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 6 – Ngăn xếp và Hàng đợi, mục II, bản TextCác thao tác được định nghĩa cho hàng đợi một cách tổng quát
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;}
Chọn một câu trả lời:
a 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
Trang 35b 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?
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
Phản hồi
Đáp án đúng là: 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à khay 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
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ì?
Chọn một câu trả lời:
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
d Danh sách liên kết vòng đôi
Phản hồi
Đáp án đúng là: Danh sách liên kết đôi
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)
Trang 36Chọn một câu trả lời:
a In đầy đủ thông tin tất cả các cán bộ đang chứa trong danh sách Q
b 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
Trang 37Duyệt lần lượt và bổ sung vào stack các giá trị từ 1 đến 5
Lấy lần lượt các phần tử khỏi Stack và in ra
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
Trang 38Khởi tạo hàng đợi
Đẩy chữ Green vào stack
Đẩy chữ Red vào Stack
Đẩy chữ Yello vào stack
Lấy phần tử đầu tiên và hủy khỏi Queue
Lấy phần tử đầu tiên tiếp và hủy khỏi Queue
Cho biết kết quả sau khi thực hiện đoạn chương trình sau:
Trang 39Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài 1 – Đánh giá thuật toán
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ựChọn một câu trả lời:
a.Ý tưởng của thuật toán sắp xếp InsertionSort
b Ý tưởng của thuật toán sắp xếp InterchangeSort
c Ý tưởng của thuật toán tìm kiếm tuyến tính
d Ý tưởng của thuật toán tìm kiếm nhị phân
Phản hồi
Đáp án đúng là: A Ý tưởng của thuật toán sắp xếp InterchangeSort
Tham khảo: Bài 2 – Tìm kiếm và sắp xếp – Mục II.2, Bản Hướng dẫn tự học
Đ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
Chọn một câu trả lời:
Trang 40a Tìm kiếm nhị phân phần tử có giá trị X
b Tìm phần tử nhỏ nhất của mảng M gồm N phần tử
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
Phản hồi
ĐĐáp án đúng là: B Tìm kiếm tuyến tính phần tử X trong mảng
Tham khảo: Bài 2 – Tìm kiếm và sắp xếp – Mục I.2, Bản Hướng dẫn tự học
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