Cấu trúc dữ liệu và giải thuật - IT05 (255)
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
A. Cả ba phương án đều sai
B. Số cung của đồ thị
C. Hai lần số cung của đồ thị
D. Một nửa số cung của đồ thị
Đ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ỗ …………..
A. p = malloc(Node);
B. p = malloc(sizeof(Node));
C. p = (Node*)malloc(sizeof(Node));
D. p = (Node*)malloc(Node));
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]…
}
else
AddFirst( DQ, new_element);
}
Đoạn lệnh nào được điền vào [1] cho đúng?
A. new_element= DQ.Tail;
B. DQ.Tail = new_element;
C. DQ.Head = new_element;
D. DQ.Tail = NULL;
Tổ chức của danh sách liên kết kép gồm có mấy thành phần:
A. 2 thành phần
B. 5 thành phần
C. 3 thành phần
D. 4 thành phầ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 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; }
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++) if (G.C[i][j]>0) printf("%8.1f",G.C[i][j]); printf("\n"); }}
C. 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);}
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++) printf("%8.1f",G.C[i][j]); printf("\n"); }}
Ta gọi đỉnh v là đỉnh cô lập trong đồ thị vô hướng G = <V, E>
A. Nếu bậc của đỉnh v là một số chẵn
B. Nếu bậc của đỉnh v là 0
C. Nếu bậc của đỉnh v là 1
D. Nếu bậc của đỉnh v là một số lẻ
Các hàm để giải phóng bộ nhớ là
A. malloc(), delete(), new(), free().
B. delete(),free().
C. malloc(), delete(), free().
D. calloc(), delete(), new(), free().
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:
A. T liên thông và mỗi cạnh của nó đều là cầu;
B. T liên thông và không có chu trình.
C. T liên thông không có chu trình và H E
D. T liên thông và có đúng n-1 cạnh.
Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm
A. float F(int n) { if (n==1) return 1.0/2; else return (float)(n+1)/(n+1) + F(n-1); }
B. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/
+ F(n-1);
}
C. float F(int n) { if (n==1) return 1.0/2; else return (float)n/(n+1) + F(n-1); }
D. float F(int n)
{
if (n==1)
return 1.0/2;
else
return (float)n/(n+1) + F
;
}
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) { 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); } }
B. void InDSCanBo (DList Q) { Node *p= Q.Head; While( p!= NULL ) { 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. void InDSCanBo (DList Q) { Node *p= Q.Tail; While( p!= NULL ) { 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); } }
D. void InDSCanBo (DList 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); } }
Trong đồ thị vô hướng, số đỉnh bậc lẻ là một số
A. Chia hết cho 3
B. Chính phương
C. Chia hết cho 2
D. Số lẻ
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ự
A. Ý tưởng của thuật toán sắp xếp InterchangeSort
B. Ý tưởng của thuật toán tìm kiếm nhị phân
C.
Ý tưởng của thuật toán sắp xếp InsertionSort
D. Ý tưởng của thuật toán tìm kiếm tuyến tính
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"); }}
A. In ma trận kề của đồ thị
B. In ma trận trọng số của đồ thị
C. In danh sách kề của đồ thị
D. In danh sách cạnh của đồ thị
Các thành phần của danh sách liên kết kép gồm:
A. 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)
B. Liên kết với nút trước (previous) và liên kết với nút sau (next)
C. Dữ liệu (infor) và liên kết với nút sau (next)
D. Dữ liệu (infor) và liên kết với nút trước (previous)
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à?
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;
Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự RNL là:
A. 8, 6, 14, 16, 11, 33, 31, 46, 36, 30
B. 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
C. 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
D. 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
Cho cây NPTK, Cho biết kết quả duyệt cây theo thứ tự LRN là:
A. 6, 8, 11, 14, 16, 30, 31, 33, 36, 46
B. 30, 11, 6, 8, 16, 14, 36, 31, 33, 46
C. 46, 36, 33, 31, 30, 16, 14, 11, 8, 6
D. 8, 6, 14, 16, 11, 33, 31, 46, 36, 30
Cho cây NPTK, chọn biểu thức tương ứng với cây:
A. (3+4)*(8-(2*6))
B. (3+4*8-2*6)
C. (3+4)*((8-2)*6)
Cho biết kết quả khi duyệt cây sau bằng phương pháp duyệt LNR (Left-Node-Right)?
A. 28, 30, 32, 35, 38, 40, 45, 47, 50, 55
B. 55, 50, 45, 47, 40, 38, 35, 32, 30, 28
C. 40, 35, 30, 28, 32, 38, 50, 45, 47, 55
D. 28, 32, 30, 38, 35, 47, 45, 55, 50, 40
Cho đồ thị vô hướng như hình vẽ. Đỉnh nào dưới đây là đỉnh treo của đồ thị:
A. Đỉnh f
B. Đỉnh a
C. Đỉnh b
D. Đỉnh d