Tải bản đầy đủ (.docx) (142 trang)

Đáp án trắc nghiệm cấu trúc dữ liệu và giải thuật it05 thi vấn đáp trực tuyến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (233.03 KB, 142 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐÁP ÁN TRẮC NGHIỆM CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

đúng nhất về danh sách liên kết đôi.

a. Vùng liên kết của một phần tử trong danh sách liên đôi có 01 mối liên kết với 02 phần tử khác trong danh sách

b. Vùng liên kết của một phần tử trong danh sách đơi có 02 mối liên kết với 01 phần tử trong danh sách@

c. Vùng liên kết của một phần tử trong danh sách liên đôi có 02 mối liên kết với phần tử đầu và cuối danh sách

d. Vùng liên kết của một phần tử trong danh sách liên kết đơi có 02 mối liên kết với phần tử trước và sau nó trong danh sách

Câu 3

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

** Cho dãy sau: 42, 23, 74, 11, 65, 58. Dùng phương pháp sắp xếp chọn trực tiếp (Selection Sort) để sắp xếp giảm dần, sau lần lặp thứ tư kết quả của dãy là

Bậc của cây có nghĩa là gì? a. Cả hai phát biểu đều đúng b. Cả hai phát biểu đều SAI

c. Là bậc nhỏ nhất của các nút trong cây d. Là bậc lớn nhất của các nút trong cây@ Câu 5

Bậc của nút trong cây có nghĩa là gì? a. Là số nhánh con của nút đó@ b. Là số nhánh con trái của nút đó

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

Câu 6

Các bước thực hiện tìm kiếm nhị phân phần tử x trên dẫy sắp xếp tăng dần được mơ tả như sau:

Bước 1: Khởi đầu tìm kiếm trên tất cả các phần tử của dãy <=> left = 0 và right = n-1

Bước 2: Tính middle = (left + right)/2. So sánh a[middle] với x. Có 3 khả năng: - a[middle] = x => Tìm thấy => Dừng

- a[middle] > x => tiếp tục tìm x trong dãy con mới với right = middle - 1 (tìm trong nửa đầu)

- a[middle] < x => tiếp tục tìm x trong dãy con mới với ... (tìm trong nửa cuối)

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

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 tốn thực hiện đúng

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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

a. calloc(), new(), free()

b. malloc(), calloc(), new()@ c. malloc(), calloc(), new(), free() d. malloc(), delete(), new(), free(). Câu 10

Các hàm để giải phóng bộ nhớ là a. calloc(), delete(), new(), free(). b. delete(),free().@

c. malloc(), delete(), free().

d. malloc(), delete(), new(), free(). Câu 11

Các loại danh sách liên kết gồm:

a. Danh sách liên kết đơn và danh sách liên kết vòng b. Danh sách liên kết đơn và danh sách liên kết kép

c. Danh sách liên kết đơn, danh sách liên kết kép và danh sách liên kết vòng@ d. Danh sách liên kết kép và danh sách liên kết vòng

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

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

d. Dữ liệu (data) Câu 14

Các thành phần của danh sách liên kết kép gồm: a. Dữ liệu (infor) và liên kết với nút sau (next)

b. Dữ liệu (infor) và liên kết với nút trước (previous)

c. Liên kết với nút trước (previous) và liên kết với nút sau (next)

d. Dữ liệu (infor), liên kết với nút trước (previous) và liên kết với nút sau

Các trường hợp chèn thêm một phần tử mới vào danh sách liên kết đơn gồm: a. Chèn thêm vào đầu danh sách, vào cuối danh sách và vào sau một phần tử q đã biết@

b. Chèn thêm vào cuối danh sách và vào sau một phần tử q đã biết c. Chèn thêm vào đầu danh sách và vào sau một phần tử q đã biết

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

d. Chèn thêm vào đầu danh sách và vào cuối danh sách Câu 18

Các trường hợp có thể xảy ra khi xóa một phần tử khỏi cây NPTK gồm: a. Nút xóa có một nhánh con và nút xóa có hai nhánh con

b. Nút xóa là nút lá và nút xóa có hai nhánh con c. Nút xóa là nút lá và nút xóa có một nhánh con

d. Nút xóa là nút lá, nút xóa có một nhánh con và nút xóa có hai nhánh con@ Câu 19

Các trường hợp thực hiện hủy phần tử khỏi danh sách liên kết đơn gồm: a. Hủy phần tử đầu danh sách và hủy phần tử đứng sau phần tử q

b. Hủy phần tử đầu danh sách và hủy phần tử có giá trị xác định k c. Hủy phần tử có giá trị xác định k và hủy phần tử đứng sau phần tử q

d. Hủy phần tử đầu danh sách, hủy phần tử đứng sau phần tử q và hủy phần tử có giá trị xác định k@

Câu 20

Các ứng dụng cơ bản của hàng đợi gồm a. Đảo ngược xâu ký dự

b. Chuyển đổi cơ số

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

b. 30, 35, 50, 40 c. 45, 47, 50, 55

d. 28, 32, 38, 47, 55@ Câu 23

Cho biết đây là ý tưởng của thuật toán nào:

Xuất phát từ dãy đầu a0, a1, …, ai, xét các phần tử sau đó từ ai+1 đến an xem có phần tử nào nhỏ hơn ai khơng thì hốn đổi vị trí => Sau mỗi lần luôn được dãy a0, a1, …, ai đã được sắp thứ tự

a. Ý tưởng của thuật toán sắp xếp InterchangeSort@ b. Ý tưởng của thuật tốn tìm kiếm tuyến tính

c. Ý tưởng của thuật tốn sắp xếp InsertionSort d. Ý tưởng của thuật tốn tìm kiếm nhị phân Câu 24

Cho biết kết quả của đoạn chương trình sau: int F(int a[], int n)

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

c. 7 d. 6@ Câu 25

Cho biết kết quả của đoạn chương trình sau: int F(int a[], int n)

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

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);

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LNR

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

new_element -> next = DQ.Head; DQ.Head -> pre = new_element;

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

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

Cho các phần tử sau: 31, 19, 36, 20, 41, 17, 33, 32. Tạo cây NPTK từ các phần tử trên. Hãy cho biết sau khi xóa phần tử 33 trên cây sau đó áp dụng phương pháp duyệt LNR thì kết quả thu được thứ tự các phần tử là như thế nào? a. 31, 19, 17, 20, 36, 32, 41

b. 17, 19, 20, 31, 32, 36, 41@

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

c. 31, 19, 36, 20, 41, 17, 32 d. 17, 20, 19, 32, 41, 36, 31 Câu 38

Cho các phần tử sau: 31, 19, 36, 20, 41, 17, 33, 32. Tạo cây NPTK từ các phần tử trên. Hãy cho biết sau khi xóa phần tử 33 trên cây sau đó áp dụng phương pháp duyệt NRL thì kết quả thu được thứ tự các phần tử là như thế nào?

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

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?

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

b. In đầy đủ thông tin tất cả các cán bộ đang chứa trong danh sách Q lần lượt từ đầu danh sách về cuối danh sách

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

d. In đầy đủ thông tin tất cả các cán bộ đang chứa trong danh sách Q lần lượt từ cuối danh sách về đầu danh sách@

Câu 46

Cho dãy 10, 5, 7, 3, 9, 2, 15, 1. Cho biết kết quả sau lần duyệt thứ nhất của thuật toán sắp xếp tăng dần bằng QuickSort

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ì?

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

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?

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?

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?

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?

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?

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

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?

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?

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

Cho dãy số sau: 30, 18, 35, 17, 40, 16, 32, 31, 43, 19. Cho biết kết quả khi duyệt cây được tạo lần lượt từ các phần tử trên bằng phương pháp duyệt LRN (Left Right Node ):

a. 30, 18, 17, 16, 19, 35, 32, 31, 40, 43

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

b. 16, 17, 19, 18, 31, 32, 43, 40, 35, 30@ c. 30, 18, 35, 17, 40, 16, 32, 31, 43, 19 d. 30, 35, 40, 43, 32, 31, 18, 19, 17, 16 Câu 57

Cho dãy số sau: 30, 18, 35, 17, 40, 16, 32, 31, 43, 19. Cho biết kết quả khi duyệt cây được tạo lần lượt từ các phần tử trên bằng phương pháp duyệt NLR (Node

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

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ừ

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Cho đoạn chương trình như sau:

void AddAfter(DLIST &DQ, DNode *q, DNode *new_element)

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Cho đoạn chương trình như sau: void RemoveHead( DLIST &DQ )

Đoạn lệnh được đưa vào (1) là? a. DQ.Head -> pre = NULL; DQ.Head -> next= NULL; b. DQ.Head -> next = NULL; c. DQ.Head -> pre = NULL;@

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

Câu 65

Cho đoạn chương trình:

void QuickSort( int a[ ], int L , int R )

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Câu 66

Cho đoạn chương trình:

void QuickSort( int a[ ], int L , int R )

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Cho đoạn chương trình:

void QuickSort( int a[ ], int L , int R ) {

int i,j,x; x=……..; i = L; j = R;

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Cho đoạn mã cài đặt phương pháp duyệt NLR: void NLR( Tree Root )

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

Đoạn mã điền vào phần trống ở dòng số [1]

Cho đoạn mã sau

stack <int> s; for (int i = 1; i <= 4; i++)

Cho đoạn mã sau

stack <int> s; for (int i = 1; i <= 5; i++)

Cho đoạn mã sau

stack <int> s; for (int i = 1; i <= 5; i++) s.push(i);

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ì?

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

Cho đoạn mã sau

stack <int> s; for (int i = 1; i <= 5; i++)

Bước 2: Nếu i<n thì s = s*i, qua bước 3; Ngược lại qua bước 4;

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

Cho đoạn mã sau:

struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next, *pre;};

struct List{ Node *head, *tail;};

Khai báo CTDL trên là khai báo CTDL dạng gì? a. Danh sách liên kết đôi@

b. Danh sách liên kết đơn c. Danh sách liên kết vịng đơi d. Danh sách liên kết vòng Câu 82

Cho đoạn mã sau:

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next;};

struct List{ Node *head, *tail;};

Khai báo Cấu trúc dữ liệu trên là khai báo CTDL dạng gì? a. Danh sách liên kết vịng đơi

b. Danh sách liên kết đơn@ c. Danh sách liên kết đôi d. Danh sách liên kết vịng Câu 83

Cho đoạn mơ tả sau:

Bước 1: Khởi đầu tìm kiếm trên tất cả các phần tử của dãy (left = 0 và right = n - 1)

Bước 2: Tính middle = (left + right)/2. So sánh a[middle] với x. Có 3 khả năng: a[middle] = x thì thơng báo Tìm thấy => Dừng

a[middle] > x thì right = middle - 1 a[middle] < x thì left = middle + 1 Bước 3:

Nếu left <= right và quay lại bước 2 để tìm kiếm tiếp Ngược lại thơng báo khơng tìm thấy và dừng thuật toán a. Các đáp án đưa ra đều sai

b. Các đáp án trên đều đúng

c. Mơ tả thuật tốn tìm kiếm tuyến tính d. Mơ tả thuật tốn tìm kiếm nhị phân@ Câu 84

Cho hàm tìm kiếm tuyến tính trong mảng 1 chiều có n phần tử int Search( int a[], int n, int x)

{ int i;

for(i=0; i<n; i++)

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

if(a[i] == x) return i; return(-1);

Chọn phát biểu đúng nhất trong các phát biểu sau

a. Hàm luôn ln trả về vị trí phần tử cuối cùng có giá trị bằng x

b. Hàm trả về vị trí phần tử cuối cùng có giá trị bằng x, ngược lại trả về n c. Hàm trả về vị trí phần tử đầu tiên có giá trị bằng x, ngược lại trả về -1@ d. Hàm trả về vị trí phần tử cuối cùng có giá trị bằng x, ngược lại trả về -1

typedef Node *Tree;

và CTC insertNode(Tree &T, item x) để chèn thêm phần tử mới vào cây nhị phân tìm kiếm, nếu chèn thành cơng trả lại giá trị 0 nếu không chèn thành công trả lại giá trị -1

Đoạn mã nào sau đây để cho phép nhập liên tiếp các số nguyên đến khi bằng 0 thì dừng và tạo cây nhị phân tìm kiếm từ các số nguyên đã nhập đó.

a. int insertNode(Tree &T, int x){ if (T != NULL) { if (T->key == x) return -1; if (T->key > x)

return insertNode(T->Left, x); else if (T->key < x)

return insertNode(T->Right, x); } T = (Node *) malloc(sizeof(Node)); if (T == NULL) return 0; T->key = x; T->Left = T->Right = NULL; return 1;}

b. Node* searchKey(Tree T, int x) { if (T!=NULL) { if (T->key == x) { Node *P = T; return P;} if (T->key > x)

return searchKey(T->Left, x); if (T->key < x) return searchKey(T->Right, x); } return NULL;}

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

c. void CreateTree(Tree &T)

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 đó.

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

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)

return insertNode(T->Left, x); else if (T->key < x)

return insertNode(T->Right, x); } T = (Node *) malloc(sizeof(Node)); if (T == NULL) return 0; T->key = x; T->Left = T->Right = NULL; return 1;}

Câu 87

Cho khai báo cấu trúc cây NPTK: struct Node

{

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

int key;

Node *Left, *Right; };

typedef Node *Tree;

và CTC insertNode(Tree &T, item x) để chèn thêm phần tử mới vào cây nhị phân tìm kiếm, nếu chèn thành cơng trả lại giá trị 0 nếu không chèn thành công trả lại giá trị -1

Đoạn mã nào sau đây để cho phép nhập liên tiếp các số nguyên đến khi bằng 0 thì dừng và tạo cây nhị phân tìm kiếm từ các số nguyên đã nhập đó.

a. void LNR(Tree T){ if(T!=NULL) { LNR(T->Left); printf("%7d",T->key);

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

return insertNode(T->Right, x); } T = (Node *) malloc(sizeof(Node)); if (T == NULL) return 0; T->key = x; T->Left = T->Right = NULL; return 1;}

d. Node* searchKey(Tree T, int x) { if (T!=NULL) { if (T->key == x) { Node *P = T; return P;} if (T->key > x)

return searchKey(T->Left, x); if (T->key < x) return searchKey(T->Right, x); } return NULL;} Câu 88

Cho khai báo cấu trúc đồ thị dạng ma trận trọng số như sau: struct DoThi{ int n; float C[max][max];};

Cho biết đoạn chương trình con sau thực hiện gì?

void XuLy(DoThi G){ printf("\n Ma tran trong so la:\n"); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) printf("%8.1f",G.C[i][j]); printf("\n"); }}

Cho khai báo cấu trúc đồ thị dạng ma trận trọng số như sau: struct DoThi{ int n; float C[max][max];};

Đâu là đoạn mã để in ma trận trọng số biểu diễn đồ thị

a. void XuLy(DoThi G, int k){ int i,j; printf("\n Cac dinh ke cua %d la:",k); for(i=1;i<=G.n;i++) if(G.C[k][i]>0) printf("%7d",i);}

b. void XuLy(DoThi G){ printf("\n Ma tran trong so la:\n"); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) printf("%8.1f",G.C[i][j]); printf("\n"); }}@

c. void XuLy(DoThi &G){ int dd,dc; int i,j; float ts; printf("Nhap so dinh do thi:"); scanf("%d",&G.n); for(i =1; i<=G.n; i++) for(j=1; j<=G.n; j++) G.C[i] [j]=0;

d. void XuLy(DoThi G){ printf("\n Ma tran trong so la:\n"); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) if (G.C[i][j]>0)

printf("%8.1f",G.C[i][j]); printf("\n"); }}

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

Câu 90

Cho khai báo cấu trúc đồ thị dạng ma trận trọng số như sau: struct DoThi{ int n; float C[max][max];};

Đâu là đoạn mã để liệt kê các đỉnh kề của một đỉnh k nào đó trong đồ thị

a. void XuLy(DoThi G){ printf("\n Ma tran trong so la:\n"); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) if (G.C[i][j]>0)

printf("%8.1f",G.C[i][j]); printf("\n"); }}

b. void XuLy(DoThi G, int k){ int i,j; printf("\n Cac dinh ke cua %d la:",k); for(i=1;i<=G.n;i++) if(G.C[k][i]>0) printf("%7d",i);}@

c. void XuLy(DoThi G){ printf("\n Ma tran trong so la:\n"); for(int i =1; i<=G.n; i++) { for(int j=1;j<=G.n;j++) printf("%8.1f",G.C[i][j]); printf("\n"); }}

d. void XuLy(DoThi &G){ int dd,dc; int i,j; float ts; printf("Nhap so dinh do thi:"); scanf("%d",&G.n); for(i =1; i<=G.n; i++) for(j=1; j<=G.n; j++) G.C[i] [j]=0;

} Câu 91

Cho khai báo cấu trúc dữ liệu như sau:

struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next, *pre;};

struct List{ Node *head, *tail;};

Đoạn mã sau đây thực hiện yêu cầu gì?

Node *TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(strcmp(p->info.hoten,k)==0) break; return p;}

a. Thực hiện tìm kiếm trong DSLK đơi có chứa Cán bộ với tên là k nào đó hay khơng?

b. Thực hiện tìm kiếm trong DSLK đơn chứa các CanBo xem có CanBo nào có mã là k hay không? Trả lại thông tin nút chứa cán bộ nếu tìm thấy ngược lại trả lại giá trị NULL

c. Thực hiện tìm kiếm Cán bộ theo tên cán bộ

d. Thực hiện tìm kiếm trong DSLK kép chứa các CanBo xem có CanBo nào có tên là k hay không? Trả lại thông tin nút chứa cán bộ nếu tìm thấy ngược lại trả lại giá trị NULL@

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

struct NodeQueue *next; struct NodeQueue *pre;

Đoạn mã sau đây thực hiện yêu cầu gì? void initQueue(Queue &Q) b. Khởi tạo Stack rỗng c. Khởi tạo danh sách rỗng d. Khởi tạo hàng đợi rỗng@ Câu 93

Cho khai báo CTDL như sau:

struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc,tt;};struct Node{ CB info; struct Node *next;};

struct List{ Node *head, *tail;};

Đâu là đoạn mã tìm kiếm CanBo theo mã cán bộ trong DSLK đơn

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

a. void TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(p->mcb == k) break;}

b. Node *TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(strcmp(p->info.ns,k)==0) break; return p;}

c. Node *TimCBMa(List Q,int k){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(p->info.mcb == k) break;

return p;}@

d. Node *TimCBMa(List Q,char k[]){ Node *p; for(p=Q.Head; p!=NULL; p=p->next) if(strcmp(p->info.hoten,k)==0) break; return p;}

Câu 94

Cho khai báo CTDL như sau:

struct CB{ int mcb; char hoten[20]; char ns[12]; float hsl,pc;};struct Node{ CB info; struct Node *next, *pre;};

struct List{ Node *head, *tail;};

Đâu là đoạn mã để in ra màn hình thơng tin đầy đủ của các Cán Bộ có trong danh sách liên kết lần lượt từ cuối trở về đầu

a. void InDSCanBo (DList Q)

</div>

×