Font size
WorksheetsCâu hỏi về cấu trúc dữ liệu và giải thuật
Total questions: 69
Worksheet time: 42mins
Tìm mô tả đúng nhất cho hàm TinhTong sau:
int TinhTong(int N)
{ int so = 2; int tong = 0; int dem = 0; while (dem
Hàm tính tổng N số nguyên đầu tiên
Hàm tính tổng N số nguyên tố nhỏ hơn N
Cả a, b đều sai
Cả a, b đều đúng
Mối quan hệ giữa cấu trúc dữ liệu và giải thuật có thể minh họa bằng đẳng thức:
Cấu trúc dữ liệu + Giải thuật = Chương trình
Cấu trúc dữ liệu + Chương trình = Giải thuật
Chương trình + Giải thuật = Cấu trúc dữ liệu
Cấu trúc dữ liệu = Chương trình
Các tiêu chuẩn đánh giá cấu trúc dữ liệu. Để đánh giá một cấu trúc dữ liệu chúng ta thường dựa vào một số tiêu chí:
Cấu trúc dữ liệu phải tiết kiệm tài nguyên (bộ nhớ trong)
Cấu trúc dữ liệu phải phản ảnh đúng thực tế của bài toán
Cấu trúc dữ liệu phải dễ dàng trong việc thao tác dữ liệu
Cả a, b, c đều đúng
Đoạn mã giả dưới đây mô tả thuật toán gì? Thuật toán: B1: k = 1 B2: IF M[k] == X AND k != N B2.1: k++ B2.2: Lặp lại B2 B3: IF k < N Thông báo tìm thấy tại vị trí k B4: ELSE Không tìm thấy. B5: Kết thúc
Tìm nhị phân phần tử có giá trị X
Tìm phần tử nhỏ nhất của mảng M bao gồm N phần tử
Tìm tuyến tính phần tử có giá trị X
Cả a, b, c đều sai
Cho hàm tìm kiếm tuyến tính như sau: int TimKiem (int M[], int N, int X) { int k = 0; M[N] = X; while (M[k] != X) k++; if (k < N) return (k); return (-1); } Chọn câu đúng nhất:
Hàm sẽ trả về 0 nếu không tìm thấy phần tử có giá trị là X
Hàm sẽ trả về 1 nếu tìm thấy phần tử có giá trị là X
Hàm sẽ trả về -1 nếu không tìm thấy phần tử có giá trị là X
Hàm sẽ trả về 1 nếu không tìm thấy phần tử có giá trị là X
Xét thủ tục sau: int TimKiemNP (int M[], int First, int Last, int X) { if (First > Last) return (-1); int Mid = (First + Last)/2; if (X == M[Mid]) return (Mid); if (X < M[Mid]) return(TimKiemNP (M, First, Mid - 1, X)); else return(TimKiemNP (M, Mid + 1, Last, X)); }
Lựa chọn câu đúng nhất để mô tả thủ tục trên:
Thủ tục hỗ trợ tìm kiếm phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ First đến chỉ số Last
Thủ tục hỗ trợ tìm kiếm đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ First đến chỉ số Last
Thủ tục hỗ trợ tìm kiếm đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ Last đến chỉ số First
Thủ tục hỗ trợ tìm kiếm không đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ Last đến chỉ số First
Chọn câu đúng nhất để mô tả thuật toán sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử:
Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N-1 lần đi thì tất cả các phần tử trong mảng M sẽ có thứ tự tăng
Đi từ đầu mảng về cuối mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N lần đi thì tất cả các phần tử trong mảng M sẽ có thứ tự tăng.
Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N lần đi thì tất cả các phần tử trong mảng M sẽ có thứ tự tăng
Cả a, b, c đều sai
Lệnh nào sau đây sẽ được đưa vào dòng lệnh thứ [5] của thủ tục:
Lệnh nào sau đây sẽ được đưa vào dòng lệnh thứ [5] của thủ tục:
for (int J = N-1; J > I; J++)
for (int J = N; J < I; J--)
for (int J = N-1; J > I; J--)
Không có dòng lệnh nào phù hợp, không cần thêm vào thuật toán vẫn chạy đúng
Chọn câu lệnh thích hợp để đưa vào [1], [2], [3] với mục tiêu hoán vị M[K] và M[PosMin]
Temp = M[K] ; Temp = M[PosMin]; M[PosMin] = Temp;
M[K] = Temp; M[K] = M[PosMin]; M[PosMin] = Temp ;
Temp = M[K] ; M[PosMin] = M[K]; M[PosMin] = Temp ;
Temp = M[K] ; M[K] = M[PosMin]; M[PosMin] = Temp ;
Cần thực hiện ..................... chọn lựa phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần.
7 lần
8 lần
9 lần
10 lần
Trong đó B8 mô tả trường hợp
Nếu còn phải dời các phần tử từ Pos->I về phía sau 1 vị trí
Nếu còn phải dời các phần tử từ Pos->K+1 về phía sau 1 vị trí
Nếu còn phải dời các phần tử từ Pos->K về phía sau 1 vị trí
Nếu còn phải dời các phần tử từ Pos->I+1 về phía sau 1 vị trí
Giả sử cần sắp xếp mảng M có N phần tử sau theo phương pháp sắp xếp chèn trực tiếp 11 16 12 75 51 54 5 73 36 52 98 Cần thực hiện ..................... chèn các phần tử vào dãy con đã có thứ tự tăng đứng đầu dãy M để sắp xếp mảng M có thứ tự tăng dần.
7 lần
8 lần
9 lần
10 lần
Lựa chọn định nghĩa về danh sách đúng nhất?
Danh sách là tập hợp các phần tử có kiểu dữ liệu xác định và giữa chúng có một mối liên hệ nào đó
Số phần tử của danh sách gọi là chiều dài của danh sách
Một danh sách có chiều dài bằng 0 là một danh sách rỗng
Cả a, b, c đều đúng
Tìm mô tả đúng cho hàm sau: int SC (int M[], int Len, int CM[]) { for (int i = 0; i < Len; i++) CM[i] = M[i]; return (Len); }
Hàm thực hiện việc sao chép nội dung mảng CM có chiều dài Len về mảng M có cùng chiều dài. Hàm trả về chiều dài của mảng M sau khi sao chép
Hàm thực hiện việc sao chép nội dung mảng M có chiều dài Len -1 về mảng CM có cùng chiều dài. Hàm trả về chiều dài của mảng CM sau khi sao chép
Hàm thực hiện việc sao chép nội dung mảng CM có chiều dài Len -1 về mảng M có cùng chiều dài. Hàm trả về chiều dài của mảng M sau khi sao chép
Hàm thực hiện việc sao chép nội dung mảng M có chiều dài Len về mảng CM có cùng chiều dài. Hàm trả về chiều dài của mảng CM sau khi sao chép
Cấu trúc dữ liệu mảng có các ưu điểm nào?
Việc thêm, bớt các phần tử trong danh sách đặc có nhiều khó khăn do phải di dời các phần tử khác đi qua chỗ khác
Việc truy xuất và tìm kiếm các phần tử của mảng là dễ dàng vì các phần tử đứng liền nhau nên chúng ta chỉ cần sử dụng chỉ số để định vị vị trí các phần tử trong danh sách (định vị địa chỉ các phần tử)
Mật độ sử dụng bộ nhớ của mảng là tối ưu tuyệt đối
Câu a, b, c đúng
Định nghĩa nào là đúng với danh sách liên kết?
Danh sách liên kết là cấu trúc dữ liệu dạng cây
Danh sách liên kết là cấu trúc dữ liệu tự định nghĩa
Danh sách liên kết là tập hợp các phần tử mà
Định nghĩa nào là đúng với danh sách liên kết?
Danh sách liên kết là cấu trúc dữ liệu dạng cây
Danh sách liên kết là cấu trúc dữ liệu tự định nghĩa
Danh sách liên kết là tập hợp các phần tử mà giữa chúng có một sự nối kết với nhau thông qua vùng liên kết của chúng
Danh sách liên kết là tập hợp các phần tử mà đặt kề cận với nhau trong vùng nhớ
Đị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: typedef struct Node { int Key; Node * NextNode; } OneNode; Trong đó, khai báo Node * NextNode; dùng để mô tả:
Con trỏ trỏ tới phần dữ liệu
Vùng liên kết quản lý địa chỉ phần tử kế tiếp
Con trỏ trỏ tới địa chỉ vùng nhớ của phần tử trước đó trong danh sách liên kết đơn
Con trỏ trỏ tới địa chỉ vùng nhớ của phần tử đầu tiên trong danh sách liên kết đơn
Với cấu trúc dữ liệu của danh sách liên kết đơn lưu trữ thông tin về phòng máy: typedef struct PM { int maPM; int tongsoMay; } PHONGMAY; typedef struct Node { PHONGMAY Data; Node * NextNode; } OneNode; typedef OneNode * SLLPointer; Để quản lý danh sách liên kết đơn bằng phần tử đầu và phần tử cuối, cần định nghĩa kiểu dữ liệu:
SLLPointer DanhSach;
typedef struct SSLLIST { SLLPointer First; SLLPointer Last; } LIST; LIST DanhSach;
typedef struct SSLLIST { SLLPointer First; SLLPointer Last; int total; }LIST; LIST DanhSach;
typedef struct SSLLIST { SLLPointer First; int total; } LIST; LIST DanhSach;
Tổ chức cấu trúc dữ liệu cho danh sách liên kết đơn: typedef struct Node { int Data; Node * Link; } OneNode; typedef OneNode * SLLPointer; Mã giả thuật toán thêm một phần tử có giá trị thành phần dữ liệu là NewData vào trong danh sách liên kết đơn SLList vào ngay sau nút có địa chỉ InsNode:
Hãy chọn câu đúng nhất cho B6 và B7
B6: InsNode-> Link = NewNode-> Link B7: NewNode = InsNode-> Link
B6: InsNode-> Link = NewNode-> Link B7: InsNode-> Link = NewNode
B6: NewNode-> Link = InsNode-> Link B7: NewNode = InsNode-> Link
B6: NewNode-> Link = InsNode-> Link B7: InsNode-> Link = NewNode
Hãy lựa chọn câu đúng nhất:
InsNode -> Link = NewNode -> Link; InsNode-> Link = NewNode;
NewNode-> Link = InsNode-> Link; InsNode-> Link = NewNode;
InsNode -> Link = NewNode -> Link; NewNode = InsNode-> Link;
NewNode-> Link = InsNode-> Link; NewNode = InsNode-> Link;
Cấu trúc dữ liệu nào tương ứng với LIFO?
Queue
Linked List
Tree
Stack
Lựa chọn câu đúng nhất về danh sách liên kết đôi (Doubly Linked List):
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 01 phần tử khác trong danh sách
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
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 02 trước và sau nó trong danh sách
Vùng liên kết của một phần tử trong danh sách liên đôi có 0
Câu 3: Cho thuật toán tìm nhị phân không đệ quy sau: int NRecBinarySearch (int M[], int N, int X) { int First = 0; int Last = N - 1; while (First <= Last) { int Mid = (First + Last)/2; if (X == M[Mid]) return(Mid); if (X < M[Mid]) Last = Mid - 1; else First = Mid + 1; } return(-1); } Chọn câu đúng nhất trong trường hợp tốt nhất khi phần tử ở giữa của mảng có giá trị bằng X:
A. Số phép gán: Gmin = 3 Số phép so sánh: Smin = 2
B. Số phép gán: Gmin = 2 Số phép so sánh: Smin = 3
C. Số phép gán: Gmin = 2 Số phép so sánh: Smin = 2
D. Số phép gán: Gmin = 0 Số phép so sánh: Smin = 2
Câu 4: 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(float X, floatY) { int Temp = X; X = Y; Y = Temp; return; }
C. void Swap(int *X, int *Y) { int Temp = X; X = Y; Y = Temp; return; }
D. void Swap(int X, intY) { int Temp = X; X = Y; Y = Temp; return; }
Câu 5: Cho cây biểu thức sau: Cho cây biểu thức sau: Chọn biểu thức tương ứng với cây (ảnh 1) Chọn biểu thức tương ứng với cây
A. (2 * (4 + (5 + 3)))
B. (4 * (2+ (5 + 3)))
C. (2 * (3 + (5 +4)))
D. (2 * (5 + (4+ 3)))
Câu 6: Cho thuật toán sau: int LinearSearch (int M[], int N, int X) { int k = 0; while (M[k] != X k < N ) k++; if (k < N ) return (k); return (-1); } Chọn câu đúng nhất trong trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:
A. Số phép gán: Gmax = 1 Số phép so sánh: Smax = 2N+1
B. Số phép gán: Gmax = 2 Số phép so sánh: Smax = 2N+1
C. Số phép gán: Gmax = 1 Số phép so sánh: Smax = 2N+2
D. Số phép gán: Gmax = 1 Số phép so sánh: Smax = N+2
Chọn câu đúng nhất trong trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:
A. Số phép gán: Gmax = 1 Số phép so sánh: Smax = N + 2
B. Số phép gán: Gmax = 2 Số phép so sánh: Smax = N + 2
C. Số phép gán: Gmax = 2 Số phép so sánh: Smax = N + 1
D. Số phép gán: Gmax = 2 Số phép so sánh: Smax =2 N + 2
Lựa chọn các câu đúng nhất để gán giá trị cho mã sinh viên của sv1 và sv2:
A. sv1.MSSV = "Nguyen Van A"; sv2.MSSV = "Nguyen Van B";
B. sv1.MSSV = "Nguyen Van A"; sv2->MSSV = "Nguyen Van B";
C. sv1->MSSV = "Nguyen Van A"; sv2->MSSV = "Nguyen Van B";
D. sv1->MSSV = "Nguyen Van A"; sv2.MSSV = "Nguyen Van B";
Lựa chọn câu đúng nhất để mô tả thủ tục trên
A. Thủ tục tìm nhị phân phần tử được nhập từ bàn phím, nếu tìm thấy sẽ thông báo ABSENT
B. Thủ tục tìm nhị phân phần tử được nhập từ bàn phím, nếu không tìm thấy sẽ thông báo ABSENT
C. Thủ tục tìm tuyến tính phần tử được nhập từ bàn phím, nếu tìm thấy sẽ thông báo ABSENT
D. Thủ tục tìm tuyến tính phần tử được nhập từ bàn phím, nếu không tìm thấy sẽ thông báo ABSENT
Biểu diễn và tổ chức ngăn xếp (Stack) bằng danh sách liên kết giả sử bề mặt của ngăn xếp là đầu danh sách liên kết: typedef struct SElement { T Key; SElement *Next; } SOneElement; typedef struct SOneElement *SSTACK; SSTACK SSP; Thêm 1 phần tử vào ngăn xếp (dùng cấu trúc dữ liệu mô tả ở trên) B1: NewElement = Khởi tạo nút mới (dùng toán tử new) B2: if (NewElement == NULL) Thực hiện BKT B3: if (SSP == NULL) B3.1: SSP = NewElement B3.2: Thực hiện BKT B4: ………………………………………... B5: ………………………………………... BKT: Kết thúc Chọn câu lệnh chính xác cho B4 và B5
B4: NewElement ->Next = SSP SSP = NewElement
B4: SSP = NewElement ->Next B5: SSP = NewElement
B4: SSP = NewElement ->Next B5: NewElement = SSP
B4: NewElement ->Next = SSP B5: NewElement = SSP
Cấu trúc dữ liệu biểu diễn hàng đợi bằng danh sách liên kết: typedef struct QElement { T Key; QElement *Next; } QOneElement; typedef QElement *QType; Cấu trúc dữ liệu quản lý hàng đợi bằng hai phần tử đầu (Front) và cuối (Rear): typedef struct QPElement { QType Font; QType Rear; } SQUEUE; SQUEUE SQList; Thêm phần tử vào sau phần tử Rear. Giả sử dữ liệu đưa vào hàng đợi là NewData, mã giả được mô tả như sau: B1: NewElement = Khởi tạo nút mới có thành phần NewData B2: IF (NewElement == NULL) Thực hiện BKT B3: IF (SQList.Front == NULL) // hàng đợi dang rỗng B3.1: SQList.Front = SQList.Rear = NewElement B3.2: Thực hiện BKT B4: ………………………………………….. B5: ………………………………………….. BKT: Kết thúc Chọn câu đúng nhất cho bước B4, B5
B4: SQList.Front->Next = NewElement B5: SQList.Front = NewElement
B4: SQList.Rear->Next = NewElement B5: SQList.Rear = NewElement
B4: NewElement = SQList.Rear->Next B5: SQList.Rear = NewElement
B4: NewElement = SQList.Front->Next B5: SQList.Font = NewElement
Chọn định nghĩa đúng nhất về hàng đợi (Queue):
Hàng đợi còn được gọi là danh sách FILO và cấu trúc dữ liệu này còn được gọi c��u trúc FILO (First In Last Out)
Hàng đợi là một danh sách mà trong đó thao tác thêm 1 phần tử vào trong danh sách được thực hiện 1 đầu này và lấy
Hàng đợi là một danh sách mà trong đó thao tác thêm 1 phần tử vào trong danh sách được thực hiện 1 đầu này và lấy 1 phần tử trong danh sách lại thực hiện bởi đầu kia
Hàng đợi là một danh sách mà trong đó thao tác thêm 1 phần tử vào trong danh sách được thực hiện 1 đầu này và lấy 1 phần tử trong danh sách lại thực hiện bởi đầu kia
Hàng đợi là một danh sách mà trong đó thao tác thêm 1 phần tử hay hủy một phần tử trong danh sách được thực hiện 1 đầu
Hàng đợi phải là một danh sách liên kết đơn
Chiều dài đường đi của một cây (path's length of the tree) được định nghĩa là tổng tất cả các chiều dài đường đi của tất cả các nút trên cây. Xét cây sau:
Chiều dài đường của cây trên là 63
Chiều dài đường của cây trên là 64
Chiều dài đường của cây trên là 65
Chiều dài đường của cây trên là 66
Chọn định nghĩa đúng nhất đối với cây nhị phân tìm kiếm:
Cây nhị phân tìm kiếm là cây nhị phân có thành phần khóa của mọi nút lớn hơn thành phần khóa của tất cả các nút trong cây con trái của nó và nhỏ hơn thành phần khóa của tất cả các nút trong cây con phải của nó
Cây nhị phân tìm kiếm là cây nhị phân có thành phần khóa của mọi nút nhỏ hơn thành phần khóa của tất cả các nút trong cây con trái của nó và nhỏ hơn thành phần khóa của tất cả các nút trong cây con phải của nó
Cây nhị phân tìm kiếm là cây nhị phân có thành phần khóa của mọi nút lớn hơn thành phần khóa của tất cả các nút trong cây con trái của nó và lớn hơn thành phần khóa của tất cả các nút trong cây con phải của nó.
Cây nhị phân tìm kiếm chính là cây nhị phân
Chọn định nghĩa đúng nhất về cây cân bằng tương đối:
Cây cân bằng tương đối là một cây nhị phân thỏa mãn điều kiện là đối với mọi nút của cây thì số nút của cây con trái và số nút của cây con phải của nút đó hơn kém nhau không quá 1. Cây cân bằng tương đối còn được gọi là cây AVL (AVL tree)
Cây cân bằng tương đối là một cây N phân thỏa mãn điều kiện là đối với mọi nút của cây thì chiều cao của cây con trái và chiều cao của cây con phải của nút đó hơn kém nhau không quá 2. Cây cân bằng tương đối còn được gọi là cây AVL (AVL tree)
Cây cân bằng tương đối là một cây nhị phân thỏa mãn điều kiện là đối với mọi nút của cây thì chiều cao của cây con trái và chiều cao của cây con phải của nút đó hơn kém nhau không quá 1. Cây cân bằng tương đối còn được gọi là cây AVL (AVL tree)
Cây cân bằng tương đối còn được gọi là cây AVL (AVL tree)
Cây cân bằng tương đối là một cây nhị phân thỏa mãn điều kiện là đối với mọi nút của cây thì chiều cao của cây con trái và chiều cao của cây con phải của nút đó hơn kém nhau không quá 2.
Cây cân bằng tương đối cũng là cây cân bằng hoàn toàn
Đị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 * NextNode; } OneNode; Trong đó, khai báo Node * NextNode; dùng để mô tả
Con trỏ trỏ tới phần dữ liệu
Vùng liên kết quản lý địa chỉ phần tử kế tiếp
Con trỏ trỏ tới phần dữ liệu cuối của danh sách
Vùng liên kết quản lý địa chỉ phần tử kế tiếp của phần tử cuối
Khi cần thêm một phần tử có giá trị thành phần dữ liệu là NewData (là một số nguyên) vào đầu của danh sách liên kết đơn dùng thuật toán có mã giả mô tả như dưới đây? typedef struct Node { int Data; Node * NextNode; } OneNode; typedef OneNode * SLLPointer; SLLPointer SSList; B1: NewNode = new OneNode B2: IF (NewNode = NULL) Thực hiện BKT B3: NewNode ->NextNode = NULL B4: NewNode ->Data = NewData B5: NewNode->NextNode = SLList B6: SLList = NewNode BKT: Kết thúc
Chuyển vai trò đứng đầu của NewNode cho SLList
Nối NewNode vào sau SLList
Chuyển vai trò đứng đầu của SLList cho NewNode
Nối SLList vào sau NewNode
Tìm kiếm xem trong danh sách liên kết đơn có tồn tại nút có thành phần dữ liệu là SearchData hay không. Thao tác này chúng ta vận dụng thuật toán tìm tuyến tính để tìm kiếm: typedef struct Node { int Data; Node * Link; } OneNode; typedef OneNode * Pointer; Pointer SSList; // Quản lý danh sách liên kết đơn bởi 1 phần tử đầu B1: CurNode = SLList B2: IF (………………………………………………) Thực hiện BKT B3: CurNode = CurNode->Link B4: Lặp lại B2 BKT: Kết thúc
CurNode != NULL OR CurNode->Data = SearchData
CurNode = NULL OR CurNode->Data != SearchData
Cu
Chọn điều kiện hợp lý cho mã giả ở B2
CurNode != NULL OR CurNode->Data = SearchData
CurNode = NULL OR CurNode->Data != SearchData
CurNode = NULL OR CurNode->Data = SearchData
CurNode != NULL OR CurNode->Data != SearchData
Tìm mô tả chính xác cho [1], [2], [3]
Hoán vị 2 mối liên kết
Hoán vị 2 vùng giá trị
Hoán vị nút đầu và nút cuối
Hoán vị 2 nút kế tiếp nhau
Hãy lựa chọn câu đúng nhất để điền vào chỗ trống ở trên
DList.DLLLast ->NextNode = NewNode; NewNode ->PreNode = DList.DLLLast; NewNode = DList.DLLLast;
DList.DLLLast ->NextNode = NewNode; DList.DLLLast = NewNode ->PreNode; DList.DLLLast = NewNode;
NewNode = DList.DLLLast ->N
Với cấu trúc dữ liệu như sau: typedef struct DNode { int Key; DNode * NextNode; DNode * PreNode; } DOneNode; typedef DOneNode * DPointerType; typedef struct DLLPairNode { DPointerType DLLFirst; DPointerType DLLLast; } DLLPType; Hàm duyệt qua các nút trong danh sách liên kết đôi quản lý bởi hai địa chỉ nút đầu tiên và nút cuối cùng thông qua DList để xem nội dung thành phần dữ liệu của mỗi nút void DLLTravelling (DLLPType DList) { DPointerType CurrNode = DList.DLLFirst; while (CurrNode != NULL) { cout << CurrNode->Key; ………………………………… } return; } Chọn câu chính xác điền vào chỗ trống để mô tả việc di chuyển từ nút này sang nút khác
CurrNode = CurrNode ->NextNode ;
CurrNode = CurrNode ->Key ;
CurrNode ->NextNode = CurrNode;
CurrNode ->Key = CurrNode;
Với cấu trúc dữ liệu mô tả cho Stack: typedef struct SElement { int Key; SElement *Next; } SOneElement; typedef SOneElement *SSTACK; Tìm mô tả chính xác cho hàm sau: void SSDelete (SSTACK &SList) { while (SList != NULL) { SSTACK TempElement = SList; SList = SList ->Next; TempElement ->Next = NULL; delete TempElement; } }
Hủy phần tử đầu của Stack
Hủy phần tử cuối của Stack
Hủy phần tử cuối của Stack và lấy giá trị đó in ra màn hình
Hủy toàn bộ Stack
Kết quả nào đúng khi thực hiện giải thuật sau: long lt(int n) {if (n==0) return 1; else return (2*lt(n-1); }
lt(12) = 2010
lt(12) = 1024
lt(7) = 720
lt(6) = 64
Kết quả nào đúng khi thực hiện giải thuật sau với a[]= {1, 3, 5}; n= 5, k= 3: Kết quả nào đúng khi thực hiện giải thuật sau với a[]= {1, 3, 5}; n= 5, k= 3: (ảnh 1)
2 3 4
1 2 3
2 3 5
1 4 5
Kết quả nào đúng khi thực hiện giải thuật sau với a[]= {1, 3, 5}; n= 5, k= 3: (ảnh 1)
2 3 4
1 2 3
2 3 5
1 4 5
Kết quả nào đúng khi thực hiện giải thuật sau với a[]= {-3, -3, 15, -3}; n= 4; x= -3: int FindX(int a[], int n, int x) {int i; for (i= n; i>= 1; i--) if (a[i]==x) return (i); return (-1);
1
2
3
4
Dấu hiệu nào dưới đây cho biết danh sách liên kết đơn L là rỗng:
(L->left == NULL)
(L->ìnfor == NULL)
(L->next == NULL)
(L == NULL)
Kết quả nào đúng khi thực hiện giải thuật sau với a[]= {1, 3, 5, 4, 2}; n= 5:
1 4 2 3 5
5 4 3 2 1
1 4 5 3 2
1 3 4 2 5
Thao tác nào dưới đây thực hiện trên hàng đợi (queue):
Thêm phần tử vào lối sau
Loại bỏ phần tử ở lối sau
Thêm phần tử vào lối trước
Thêm và loại bỏ phần tử tại vị trí bất kỳ
Dấu hiệu nào dưới đây cho biết hàng đợi đã có thao tác thêm và loại bỏ phần tử là rỗng:
Lối trước có giá trị > giá trị của lối sau
Lối sau nhận giá trị = 0
Lối trước có giá trị < giá trị của lối sau
Lối trước nhận giá trị = 0
Thao tác nào dưới đây thực hiện trên ngăn xếp (stack):
Thêm phần tử vào vị trí bất kỳ
Loại bỏ phần tử tại vị trí bất kỳ
Thêm và loại bỏ phần tử luôn thực hiện tại vị trí đỉnh (top)
Thêm và loại bỏ phần tử có thể thực hiện tại vị trí bất kỳ
Trong phép duyệt cây nhị phân có 24 nút theo thứ tự sau, nút gốc có thứ tự:
Thứ 1
Thứ 2
Thứ 23
Thứ 24
Nút có khóa nhỏ nhất trong cây nhị phân tìm kiếm khác rỗng là:
Nút gốc
Tất cả các nút
Nút con bên phải nhất
Nút con bên trái nhất
Cây nhị phân khác rỗng là cây:
Mỗi nút (trừ nút lá) đều có hai nút con
Tất cả các nút đều có nút con
Mỗi nút có không quá 2 nút con
Tất cả các nút đều có nút cha
Đồ thị G có n đỉnh và m cạnh với m, n thì ma trận kề của G luôn có dạng:
là ma trận vuông cấp n
là ma trận cấp nxm
là ma trận v
Đồ thị G có n đỉnh và m cạnh với m, n thì ma trận kề của G luôn có dạng:
là ma trận vuông cấp n
là ma trận cấp nxm
là ma trận vuông cấp m
là ma trận cấp mxn
Đồ thị vô hướng G có chu trình Euler khi và chỉ khi:
G liên thông và mọi đỉnh G có bậc chẵn
mọi đỉnh G có bậc chẵn
G có chu trình Hamilton
G có đường đi Euler
Nhân tố nào là nhân tố chính ảnh hưởng đến thời gian tính của một giải thuật:
Máy tính
Thuật toán được sử dụng
Chương trình dịch
Kích thước của dữ liệu đầu vào của thuật toán
Chọn phát biểu đúng trong các phát biểu dưới đây: bằng cách chạy thử 1 thuật toán với 1 bộ dữ liệu, ta có thể:
Khẳng định thuật toán đúng nếu nó cho kết quả đúng
Khẳng định thuật toán sai nếu cho kết quả sai
Khẳng định thuật toán tốt nếu cho kết quả nhanh
Khẳng định thuật toán hiệu quả nếu cho kết quả đúng
Trong các mệnh đề sau đây, mệnh đề nào sai:
Kiểu dữ liệu là một tập hợp nào đó các phần tử dữ liệu cùng chung một thuộc tính
kiểu của một ngôn ngữ bao gồm các kiểu dữ liệu đơn và các phương pháp cho phép ta từ các kiểu dữ liệu đã có xây dựng nên các kiểu dữ liệu mới
Cấu trúc dữ liệu là các dữ liệu phức tạp, được xây dựng nên từ các kiểu dữ liệu đã có, đơn giản hơn bằng các phương pháp liên kết nào đó
Một trong ba mệnh đề trên là sai
Tìm mệnh đề sai trong các mệnh đề sau: Một cấu trúc dữ liệu bao gồm…
Một tập hợp nào đó các dữ liệu thành phần
Các dữ liệu thành phần đặt sát nhau trong bộ nhớ
Cho danh sách đặc có 10 phần tử. Khi thêm phần tử vào vị trí 4 trong danh sách, vòng lặp dịch chuyển tịnh tiến nội dung các phần tử L->Elements[i]=L->Elements[i+1] sẽ thực hiện:
4 lần
5 lần
6 lần
Tất cả đều sai
