Cho thông tin của Hang Hoa gồm: mã hàng, tên hàng, số lượng và đơn giá.
Đâu là đoạn mã khai báo Cấu trúc dữ liệu dạng danh sách liên kết kép để lưu trữ danh sách Hang Hoa
A. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next;};
struct List{ Node *head, *tail;};
B. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};struct Node{ HH info; struct Node *next, *pre;};
struct List{ Node *head, *tail;};
C. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH ds[10];
D. struct HH{ int mHang; char tenHang [20]; float soLuong, donGia;};HH x;
Lựa chọn câu đú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 đôi có 02 mối liên kết với 01 phần tử trong danh sách
B. 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. 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
D. 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
Các dạng biểu diễn của biểu thức toán học gồm
A. Tiền tố, trung tố và hậu tố
B. Trung tố và hậu tố
C. Tiền tố và trung tố
D. Tiền tố và hậu tố
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

;
}
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:
A. Bán đỉnh bậc ra của đỉnh i, bán đỉnh bậc vào đỉnh j.
B. Bán đỉnh bậc vào của đỉnh i, bán đỉnh bậc vào đỉnh j.
C. Bán đỉnh bậc vào của đỉnh i, bán đỉnh bậc ra đỉnh j
D. Bán đỉnh bậc ra của đỉnh i, bán đỉnh bậc ra đỉnh j.
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);
}
}