Font size
WorksheetsCâu hỏi trắc nghiệm về cấu trúc dữ liệu và giải thuật
Total questions: 99
Worksheet time: 50mins
Giải thuật đệ quy là:
Trong giải thuật của nó có lời gọi tới chính nó nhưng với phạm vi nhỏ hơn.
Trong giải thuật của nó có lời gọi tới chính nó nhưng với phạm vi lớn hơn.
Trong giải thuật của nó có lời gọi tới một giải thuật khác đã biết kết quả.
Trong giải thuật của nó có lời gọi tới chính nó.
Giải thuật đệ quy là:
Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1 khác T, thì lời giải đó được gọi là lời giải đệ quy.
Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1, có dạng giống như T, thì lời giải đó được gọi là lời giải đệ quy.
Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1 mà T1 giải được thì lời giải đó được gọi là lời giải đệ quy.
Nếu lời giải của của một bài toán T được giải bằng lời giải của một bài toán T1 mà T1 có độ phức tạp khác T, thì lời giải đó được gọi là lời giải đệ quy.
Đặc điểm của giải thuật đệ quy:
Trong thủ tục đệ quy có lời gọi đến chính thủ tục đó.
Sau mỗi lần có lời gọi đệ quy thì kích thước của bài toán được thu nhỏ hơn trước.
Có một trường hợp đặc biệt, trường hợp suy biến Khi trường hợp này xảy ra thì bài toán còn lại sẽ được giải quyết theo một cách khác.
Tất cả đều đúng.
Danh sách tuyến tính là:
Danh sách mà quan hệ lân cận giữa các phần tử được xác định.
Danh sách dạng được lưu dưới dạng mảng.
Danh sách tuyến tính là một danh sách rỗng.
Danh sách tuyến tính là một danh sách có dạng (a1, a2, .... an).
Ưu điểm của việc cài đặt danh sách bằng mảng:
Có thể bổ sung hoặc xóa một phần tử bất kỳ trong mạng.
Việc truy nhập vào phần tử của mảng được thực hiện trực tiếp dựa vào địa chỉ tính được (chỉ số), nên tốc độ nhanh và đồng đều đối với mọi phần tử.
Có thể thay đổi số lượng phần tử theo ý muốn của người dùng.
Tất cả các ý trên đều đúng.
Danh sách tuyến tính dạng ngăn xếp là:
Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp được thực hiện ở một đầu, và phép loại bỏ được thực hiện ở đầu kia.
Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp và phép loại bỏ một phần tử khỏi ngăn xếp luôn luôn thực hiện ở một đầu gọi là đỉnh.
Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp và phép loại bỏ một phần tử khỏi ngăn xếp luôn luôn thực hiện ở tại một vị trí bất kì trong danh sách.
Là một danh sách tuyến tính trong đó phép bổ sung một phần tử vào ngăn xếp được thực hiện ở một đầu, Và phép loại bỏ không thực hiện được.
Danh sách tuyến tính dạng ngăn xếp làm việc theo nguyên tắc:
FIFO (first in first out)
LILO (last in last out)
LIFO (last in first out)
FOLO (fisrt out last out)
Khi đổi một số nguyên từ hệ thập phân sang hệ nhị phân thì người ta dùng phép chia liên tiếp cho 2 và lấy các số dư (là các chữ số nhị phân) theo chiều ngược lại. Cơ chế sắp xếp này chính là cơ chế hoạt động của cấu trúc dữ liệu:
Hàng đợi (Queue)
Mảng (array)
Bản ghi (Record)
Ngăn xếp (stack)
Định nghĩa danh sách tuyến tính Hàng đợi (Queue):
Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung một phần tử được thực hiện ở một đầu, gọi là lối sau (rear) hay lối trước (front). Phép loại bỏ không thực hiện được.
Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung phần tử ở một đầu, gọi là lối sau (rear) và phép loại bỏ phần tử được thực hiện ở đầu kia, gọi là lối trước (front).
Hàng đợi là kiểu danh sách tuyến tính trong đó, phép bổ sung một phần tử hay loại bỏ được thực hiện ở một đầu danh sách gọi là đỉnh (Top).
Là một danh sách tuyến tính trong đó phép bổ sung một phần tử và phép loại bỏ một phần tử được thực hiện ở tại một vị trí bất kì trong danh sách.
Hàng đợi còn được gọi là danh sách kiểu:
FIFO (first in first out)
LILO (last in last out)
LIFO (last in first out)
FOLO (firsst out last out)
Để thêm một đối tượng x bất kỳ vào Stack, thao tác thường dùng là:
POP(x)
EMPTY(x)
TOP(x)
PUSH(x)
Để lấy loại bỏ một đối tượng ra khỏi Stack, thao tác thường dùng là:
PUSH(x)
POP(x)
EMPTY(x)
FULL(x)
Để biểu diễn Stack, ta thường sử dụng kiểu dữ liệu nào sau đây?
Danh sách móc nối và mảng dữ liệu
Kiểu bản ghi
Mảng dữ liệu
Danh sách móc nối
Thao tác POP(x) dùng trong Stack là để:
Xóa bỏ một dãy các phần tử ra khỏi Stack
Xóa bỏ một phần tử bất kì khỏi Stack
Lấy phần tử đầu tiên ra khỏi Stack
Lấy một phần tử cuối cùng ra khỏi đỉnh Stack
Thao tác Push(x) dùng trong Stack là để:
Bổ sung một phần tử vào đầu Stack
Bổ sung một dãy các phần tử vào đỉnh Stack.
Bổ sung một phần tử vào đỉnh Stack
Bổ sung một phần tử bất kì vào Stack
Cho Stack gồm 5 phần tử {12, 5, 20, 23, 25}, trong đó 25 là phần tử ở đỉnh Stack. Để lấy ra phần tử thứ 3 trong Stack ta phải làm thế nào?
POP(25), POP(23), POP(20)
POP(25), POP(23), POP(20), PUSH(23), PUSH(25)
POP(25), POP(23), POP(20), PUSH(25), PUSH(23)
POP(25), POP(23), PUSH(20), PUSH(25), PUSH(23)
Trong lưu trữ dữ liệu kiểu Queue (Q) dưới dạng mảng nối vòng, giả sử F là con trỏ tới lối trước của Q, R là con trỏ tới lối sau của Q. Điều kiện F=R=0 nghĩa là:
Queue rỗng
Kiểm tra chỉ số trước và chỉ số sau của Queue có bằng nhau không.
Queue tràn
Đặt phần tử đầu và phần tử cuối của Queue bằng 0
Trong lưu trữ dữ liệu kiểu Queue (Q), giả sử F là con trỏ tới lối trước của Q, R là con trỏ tới lối sau của Q. Khi thêm một phần tử vào Queue, thì R và F thay đổi thế nào?
F=F-1, R không thay đổi
F không thay đổi, R=R-1
F=F+1, R không thay đổi
F không thay đổi, R=R+1
Trong lưu trữ dữ liệu kiểu Queue (Q), giả sử F là con trỏ tới lối trước của Q, R là con trỏ tới lối sau của Q. Khi loại bỏ một phần tử vào Queue, thì R và F thay đổi thế nào?
F=F-1, R không thay đổi
F không thay đổi, R=R-1
F không thay đổi, R=R+1
F=F+1, R không thay đổi
Trong biểu diễn dữ liệu dưới dạng cây, cấp của cây chính là:
Cấp cao nhất của nút lá
Cấp cao nhất của một nút trên cây
Tổng số nút trên cây
Cấp cao nhất của nút gốc
Trong biểu diễn dữ liệu dưới dạng cây, nút có cấp bằng 0 gọi là:
Lá
Phần tử cuối cùng trong cây
Không có đáp án nào đúng
Gốc
Mỗi nút trong cây có thể có tối đa:
1 nút con
Nhiều nút con
3 nút con
2 nút con
Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là i thì vị trí của nút con trái là:
i−1
2∗i
i+1
2∗i+1
Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là i thì vị trí của nút con phải là:
i+1
2∗i
2∗i+1
i−1
Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là 3 thì vị trí tương ứng của nút con sẽ là:
6
6 và 7
4
7
Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là 3 thì vị trí tương ứng của nút con trái sẽ là:
2
4
7
6
Khi lưu trữ cây nhị phân dưới dạng mảng, nếu vị trí của nút cha trong mảng là 3 thì vị trí tương ứng của nút con phải sẽ là:
2
4
6
7
Duyệt cây nhị phân theo thứ tự trước được thực hiện theo thứ tự:
Duyệt cây con trái theo thứ tự trước, thăm gốc giữa, duyệt cây con phải theo thứ tự sau.
Duyệt cây con trái theo thứ tự sau, thăm gốc trước, duyệt cây con phải theo thứ tự sau.
Nút gốc, duyệt cây con trái theo thứ tự trước, duyệt cây con phải theo thứ tự trước.
Thăm gốc trước, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự sau.
Duyệt cây nhị phân theo thứ tự giữa được thực hiện theo thứ tự:
Thăm gốc trước, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự sau.
Duyệt cây con trái theo thứ tự trước, thăm gốc giữa, duyệt cây con phải theo thứ tự sau.
Duyệt cây con trái theo thứ tự giữa, thăm gốc, duyệt cây con phải theo thứ tự giữa.
Thăm gốc, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự giữa.
Duyệt cây nhị phân theo thứ tự sau được thực hiện theo thứ tự:
Thăm gốc, duyệt cây con trái theo thứ tự sau, duyệt cây con phải theo thứ tự sau.
Duyệt cây con trái theo thứ tự sau, duyệt cây con phải theo thứ tự sau, thăm gốc.
Duyệt cây con trái theo thứ tự trước, thăm gốc giữa, duyệt cây con phải theo thứ tự sau.
Thăm gốc trước, duyệt cây con trái theo thứ tự giữa, duyệt cây con phải theo thứ tự sau.
Ý tưởng phương pháp sắp xếp chọn tăng dần (select sort) là:
Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chỗ phần tử bé nhất với phần tử thứ nhất; Tương tự đối với phần tử nhỏ thứ hai, ba...
Phân đoạn dãy thành nhiều dãy con và lần lượt trộn hai dãy con thành dãy lớn hơn, cho đến khi thu được dãy ban đầu đã được sắp xếp.
Lần lượt lấy phần tử của danh sách chèn vị trí thích hợp của nó trong dãy.
Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kề tiếp nhau, nếu phần tử nào bé hơn được dừng lên vị trí trên.
Ý tưởng phương pháp sắp xếp nổi bọt (bubble sort) là:
Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kề tiếp nhau, nếu phần tử nào nhỏ hơn được đứng vị trí trên.
Phân đoạn dãy thành nhiều dãy con và lần lượt trộn hai dãy con thành dãy con thành dãy lớn hơn, cho đến khi thu được dãy ban đầu đã được sắp xếp.
Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chỗ phần tử bé nhất với phần tử thứ nhất; Tương tự đối với phần tử nhỏ thứ hai, ba...
Lần lượt lấy phần tử của danh sách chèn vị trí thích hợp của nó trong dãy bằng cách đẩy các phần tử lớn hơn xuống.
Ý tưởng phương pháp sắp xếp chèn (insertion sort) là:
Phân đoạn dãy thành nhiều dãy con và lần lượt trộn hai dãy con thành dãy lớn hơn, cho đến khi thu được dãy ban đầu đã được sắp xếp.
Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kề tiếp nhau, nếu phần tử nào nhỏ hơn được đứng vị trí trên.
Lần lượt lấy phần tử của danh sách chèn vị trí thích hợp của nó trong dãy bằng cách đẩy các phần tử lớn hơn xuống.
Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chỗ phần tử bé nhất với phần tử thứ nhất; Tương tự đối với phần tử nhỏ thứ hai, ba...
Ý tưởng phương pháp sắp xếp nhanh (Quick sort) là:
Lần lượt chia dãy phần tử thành hai dãy con bởi một phần tử khoá (dãy con trước khoá gồm các phần tử nhỏ hơn khoá và dãy còn lại gồm các phần tử lớn hơn khoá).
Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kề tiếp nhau, nếu phần tử nào nhỏ hơn được đứng vị trí trên.
Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chỗ phần tử bé nhất với phần tử thứ nhất; Tương tự đối với phần tử nhỏ thứ hai, ba...
Phân đoạn dãy thành nhiều dãy con và lần lượt trộn hai dãy con thành dãy lớn hơn, cho đến khi thu được dãy ban đầu đã được sắp xếp.
Phương pháp sắp xếp nhanh (Quick sort) chính là phương pháp:
Phân đoạn
Vun đống
Chèn
Trộn
Ý tưởng phương pháp sắp xếp Trộn (Merge sort) là:
Bắt đầu từ cuối dãy đến đầu dãy, ta lần lượt so sánh hai phần tử kề tiếp nhau, nếu phần tử nào nhỏ hơn được đứng vị trí trên.
Phân đoạn dãy thành nhiều dãy con và lần lượt trộn hai dãy con thành dãy lớn hơn, cho đến khi thu được dãy ban đầu đã được sắp xếp.
Lần lượt chia dãy phần tử thành hai dãy con bởi một phần tử khoá (dãy con trước khoá gồm các phần tử nhỏ hơn khoá và dãy còn lại gồm các phần tử lớn hơn khoá).
Chọn phần tử bé nhất xếp vào vị trí thứ nhất bằng cách đổi chỗ phần tử bé nhất với phần tử thứ nhất; Tương tự đối với phần tử nhỏ thứ hai, ba...
Ý tưởng của giải thuật tìm kiếm nhị phân:
So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có khoá cần tìm.
Tại mỗi bước tiến hành so sánh X với phần tử ở giữa của dãy, dựa vào bước so sánh này quyết định giới hạn dãy tìm kiếm nằm ở nửa trên, hay nửa dưới của dãy hiện hành.
Lần lượt chia dãy thành hai dãy con dựa vào phần tử khoá, sau đó thực hiện việc tìm kiếm trên hai đoạn đã chia.
Tìm kiếm dựa vào cây nhị tìm kiếm.
Ý tưởng của giải thuật tìm kiếm tuần tự:
Lần lượt chia dãy thành hai dãy con dựa vào phần tử khoá, sau đó thực hiện việc tìm kiếm trên hai đoạn đã chia.
Tìm kiếm dựa vào cây nhị tìm kiếm: Nếu giá trị cần tìm nhỏ hơn gốc thì thực hiện tìm kiếm trên cây con trái, ngược lại ta việc tìm kiếm được thực hiện trên cây con phải.
Tại mỗi bước tiến hành so sánh X với phần tử ở giữa của dãy, dựa vào bước so sánh này quyết định giới hạn dãy tìm kiếm nằm ở nửa trên, hay nửa dưới của dãy hiện hành.
So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có khoá cần tìm.
Tư tưởng của giải thuật tìm kiếm trên cây nhị phân tìm kiếm:
So sánh X lần lượt với các phần tử thứ nhất, thứ hai,... của dãy cho đến khi gặp phần tử có khoá cần tìm.
Tìm kiếm dựa vào cây nhị tìm kiếm: Nếu giá trị cần tìm nhỏ hơn gốc thì thực hiện tìm kiếm trên cây con trái, ngược lại ta việc tìm kiếm được thực hiện trên cây con phải.
Tại mỗi bước tiến hành so sánh X với phần tử ở giữa của dãy, dựa vào bước so sánh này quyết định giới hạn dãy tìm kiếm nằm ở nửa trên, hay nửa dưới của dãy hiện hành.
Lần lượt chia dãy thành hai dãy con dựa vào phần tử khoá, sau đó thực hiện việc tìm kiếm trên hai đoạn đã chia.
Cây nhị phân tìm kiếm là:
Là cây nhị phân đầy đủ.
Cây nhị phân mà mỗi nút trong cây đều thoả tính chất: giá trị của nút cha nhỏ hơn mọi nút trên cây con trái và lớn hơn mọi nút trên cây con phải của nó.
Cây nhị phân mà mỗi nút trong cây đều thoả tính chất: giá trị của nút cha lớn hơn giá trị của hai nút con.
Cây nhị phân thoả tính chất heap.
Trong các giải thuật sắp xếp, giải thuật nào áp dụng phương pháp "Chia để trị"?
Quick sort, Heap sort
Quick sort, Bubble sort
Quicck sort, Insert sort
Quick sort, Merge sort
Cho dãy số {6 1 3 0 5 7 9 2 8 4}, áp dụng phương pháp sắp xếp lựa chọn (Select sort). Dãy số thu được sau lần lặp thứ hai là:
{0 1 2 6 5 7 9 3 4 8}
{0 1 2 6 5 7 9 3 8 4}
{0 1 3 6 5 7 9 2 8 4}
{0 1 2 3 4 5 6 7 8 9}
Cho dãy số {4 7 0 9 2 5 3 1 8 6}, áp dụng phương pháp sắp xếp nổi bọt (Bubble sort). Dãy số thu được sau lần lặp thứ ba là:
{0 1 2 4 7 3 9 5 6 8}
{0 1 2 3 4 7 5 9 6 8}
{0 4 7 1 9 2 5 3 6 8}
{0 1 4 7 2 9 3 5 6 8}
Cho dãy số {4 0 2 8 5 9 6 1 3 7}, áp dụng phương pháp sắp xếp chèn (Insert sort). Dãy số thu được sau lần lặp thứ bốn là:
{0 1 2 3 5 9 6 4 8 7}
{0 4 2 8 5 9 6 1 3 7}
{0 1 2 8 5 9 6 4 3 7}
{0 2 4 5 8 9 6 1 3 7}
Cho dãy số {3 1 6 0 5 4 8 2 9 7}, áp dụng phương pháp sắp xếp nhanh (Quick sort). Dãy số thu được sau lần lặp thứ bốn là:
{0 1 2 3 (5 4 8 6 9 7)}
{0 1 (2) 3 (5 4) 8 (6 9 7)}
{(3) 1 (6 0) 5 (4) 8 2 (9 7)}
{(0) 1 (2 3) 4 (5 6) 7 (8 9)}
Cho dãy số: 12 2 8 5 1 6 4 15 và các bước sắp xếp sau: Bước 1: 1 2 8 5 12 6 4 15 Bước 2: 1 2 8 5 12 6 4 15 Bước 3: 1 2 4 5 12 6 8 15 Bước 4: 1 2 4 5 12 6 8 15 Bước 5: 1 2 4 5 6 12 8 15 Bước 6: 1 2 4 5 6 8 12 15 Các bước trên dựa theo giải thuật sắp xếp nào?
Select sort
Quick sort
Insert sort
Bubble sort
Cho dãy số: "4 7 0 9 2 5 3 1 8 6" và các bước sắp xếp sau: Bước 1: 0 4 7 1 9 2 5 3 6 8 Bước 2: 0 1 4 7 2 9 3 5 6 8 Bước 3: 0 1 2 4 7 3 9 5 6 8 Bước 4: 0 1 2 3 4 7 5 9 6 8 Bước 5: 0 1 2 3 4 5 7 6 9 8 Bước 6: 0 1 2 3 4 5 6 7 8 9 Các bước trên dựa theo giải thuật sắp xếp nào?
Bubble sort
Select sort
Quick sort
Insert sort
Cho dãy số: "5 1 4 2 7 3" và các bước sắp xếp sau: Bước 1: 1 5 4 2 7 3 Bước 2: 1 4 5 2 7 3 Bước 3: 1 2 4 5 7 3 Bước 4: 1 2 4 5 7 3 Bước 5: 1 2 3 4 5 7 Các bước trên dựa theo giải thuật sắp xếp nào?
Select sort
Insert sort
Quick sort
Bubble sort
Cho dãy số: 3 1 6 0 5 4 8 2 9 7 và các bước sắp xếp sau: Bước 1: 1 3 6 0 5 4 8 2 9 7 Bước 2: 1 3 6 0 5 4 8 2 9 7 Bước 3: 1 3 6 0 5 4 8 2 9 7 Bước 4: 0 1 3 5 6 4 8 2 9 7 Bước 5: 0 1 3 5 6 4 8 2 9 7 Bước 6: 0 1 3 5 6 2 4 8 9 7 Bước 7: 0 1 3 5 6 2 4 8 7 9 Bước 8: 0 1 3 5 6 2 4 7 8 9 Bước 9: 0 1 2 3 4 5 6 7 8 9 Các bước trên dựa theo giải thuật sắp xếp nào?
Quick sort
Select sort
Merge sort
Insert sort
Cho dãy số sau: 10 11 14 32 36 43 55 57 87 97. Áp dụng phương pháp tìm kiếm nhị phân, sau bao nhiêu lần phân đoạn ta sẽ tìm thấy số 43?
2 lần
4 lần
3 lần
5 lần
Tính chất nào sau đây là tính chất của cây nhị phân tìm kiếm:
Mọi khóa thuộc cây con trái nút đó đều lớn hơn khóa ứng với nút đó.
Đáp án A và C.
Mọi khóa thuộc cây con trái nút đó đều nhỏ hơn khóa ứng với nút đó.
Mọi khóa thuộc cây con trái nút đó đều lớn hơn khóa cây con phải nút đó.
Chọn câu trả lời đúng nhất về thuật toán
Thuật toán là một dãy hữu hạn các bước, mỗi bước mô tả chính xác các phép toán hoặc hành động cần thực hiện để giải quyết vấn đề đặt ra.
Thuật toán là một dãy hữu hạn các bước, tất cả các phép toán có mặt trong các bước của thuật toán phải đủ đơn giản.
Thuật toán là nòng cốt của chương trình.
Thuật toán cần có một hoặc nhiều dữ liệu ra (output), dữ liệu vào (input).
Sắp xếp theo thứ tự tăng dần của cấp độ thời gian thực hiện chương trình Chú ý: (log2n) = Log cơ số 2 của n
O(nlog2n), O(n), O(log2n), O(1)
O(log2n), O(n), O(nlog2n), O(1)
O(1), O(nlog2n), O(n), O(log2n)
O(1), O(log2n), O(n), O(nlog2n)
Định nghĩa cấu trúc dữ liệu Stack:
Stack là một danh sách đặc biệt mà phép thêm vào được thực hiện ở một đầu, và phép loại bỏ được thực hiện ở phần kia của stack.
Stack là một danh sách đặc biệt mà phép thêm vào hoặc loại bỏ một phần tử chỉ thực hiện tại một đầu gọi là đỉnh (Top) của Stack.
Stack là danh sách kết nối.
Stack là cấu trúc dữ liệu được cài đặt bằng con trỏ.
Để cài đặt Stack ta có thể dùng phương pháp nào sau đây:
Bằng con trỏ và bằng mảng
Bằng con trỏ
Bằng mảng
Tất cả đều sai
Hãy cho biết hàm sau dùng để làm gì Position ham (List L) { Position P; P=L; while (P->Next!=NULL) P=P->Next; return P; } Chọn một
Xác định phần tử đầu tiên.
Xác định phần tử cuối cùng.
Xác định phần tử đứng sau P.
Xác định phần tử đứng trước P.
Hãy cho biết hàm sau dùng để làm gì? Position ham2 (ElementType X, List L) { Position P; int f=0; P=L; while (P->Next!=NULL&&f==0) if (P->Next->Element==X) f=1; else P=P->Next; return P->Next; } Chọn một
Xác định vị trí phần tử đứng sau X.
Xác định vị trí của phần tử có nội dung là X.
Xác định phần tử đứng sau X.
Xác định vị trí phần tử đứng trước X.
Hãy cho biết hàm sau dùng để làm gì?
void ham3 (ElementType X, List &L)
{
Position P,Q;
P=L;
while (P->Next!=NULL)
{
if (P->Next->Element==X) Q=P->Next;
P=P->Next;
}
while (L->Next!=Q->Next)
{
cout<
In từ đầu danh sách đến X.
In từ đầu danh sách đến X xuất hiện đầu tiên.
In từ đầu danh sách đến X xuất hiện cuối cùng.
In từ đầu danh sách đến X xuất hiện lần 2.
Hãy cho biết hàm sau dùng để làm gì? void them (ElementType X, ElementType Y, List &L) { Position P,Q; P=L; while (P->Next!=NULL) { if (P->Next->Element==Y) Q=P->Next; P=P->Next; } InsertList(X,Q,L); } Chọn một
Thêm X vào sau Y xuất hiện sau cùng.
Thêm X vào trước Y xuất hiện sau cùng.
Thêm X vào sau Y xuất hiện đầu tiên.
Thêm X vào trước Y xuất hiện đầu tiên.
Hãy cho biết hàm sau dùng để làm gì? void xoa (ElementType X, List &L) { Position P; P=L; while (P->Next!=NULL) { if (P->Next->Element==X) DeleteList(P,L); else P=P->Next; } PrintList(L); } Chọn một
Xóa phần tử có nội dung là X đầu tiên.
Xóa phần tử có nội dung là X cuối cùng.
Xóa tất cả phần tử có nội dung là X.
Xóa phần tử tại vị trí X.
Đánh giá độ phức tạp của giải thuật là việc xác định ... và ..... mà giải thuật cần để thực hiện giải một bài toán. Chọn một
thời gian, dung lượng bộ nhớ
tính đơn giản, thời gian
độ khó, thời gian
dung lượng bộ nhớ, độ khó
Cho mô hình minh họa việc thêm một phần tử có nội dung là X vào danh sách liên kết đơn. Cho biết câu lệnh nào sau đây tương ứng với (3) trong mô hình. Chọn một
P->Next = Temp;
Position Temp = new Node;
Temp->Element = X;
Temp->Next = P->Next;
Lời gọi hàm Swap(5, 10); sẽ không báo lỗi đối với hàm nào sau đây? Chọn một
void Swap(int a, int b) { int t = a; b = t; a = b; }
void Swap(int &a, int &b) { int t = a; a = b; b = t; }
Quá trình khử đệ quy bằng cách sử dụng ngăn xếp được thực hiện qua bao nhiêu bước? Chọn một
4 bước
5 bước
2 bước
3 bước
Trong ngôn ngữ lập trình C/C++ có các cấu trúc điều khiển sau. Chọn một
Tuần tự và lặp.
Tuần tự, rẽ nhánh và lặp.
Tuần tự và rẽ nhánh.
Rẽ nhánh và lặp.
Cho hàm sau: long Func(int n, int x, int y) { if(n==0) return x*y; else if(n%2==0) return Func(n-1, x/2, y*2); else return Func(n-1, x*2, y/2); } Lời gọi hàm Func(5, 4, 3) sẽ trả về kết quả là: Chọn một
9
8
12
7
Cấu trúc dữ liệu là ... Chọn một
cách lưu trữ dữ liệu trong bộ nhớ máy tính (HDD), sao cho nó có thể được sử dụng một cách hiệu quả.
cách lưu trữ dữ liệu trong bộ nhớ máy tính (ROM), sao cho nó có thể được sử dụng một cách hiệu quả.
cách lưu trữ dữ liệu trong bộ nhớ máy tính (USB), sao cho nó có thể được sử dụng một cách hiệu quả.
cách lưu trữ dữ liệu trong bộ nhớ máy tính (RAM), sao cho nó có thể được sử dụng một cách hiệu quả.
Cho hàm xóa một phần tử khỏi hàng đợi như sau: void DeQueue(Queue Q) { if(!EmptyQueue(Q)) { Position T; // (1) T=Q.Front; // (2) Q.Front=Q.Front->Next; // (3) if(Q.Front==NULL) Q.Rear=NULL; // (4) delete T; } } Ta có thể bỏ câu lệnh nào mà hàm trên vẫn thực hiện đúng chức năng của nó? Chọn một
Câu lệnh (4).
Câu lệnh (2).
Câu lệnh (3).
Câu lệnh (1).
Phát biểu nào sau đây là đúng? Chọn một
Ngăn xếp có tính chất "vào trước ra trước".
Ta chỉ có thể cài đặt ngăn xếp bằng con trỏ.
Ngăn xếp là danh sách hạn chế việc thêm vào thực hiện ở một đầu và loại bỏ thực hiện ở đầu còn lại.
Ngăn xếp có tính chất "vào trước ra sau".
Sắp xếp các câu lệnh sau theo trật tự đúng cho quy trình thêm một phần tử có nội dung X vào sau vị trí P trong danh sách liên kết đơn: (1) Position Temp = new Node; (2) P->Next = Temp; (3) Temp->Element = X; (4) Temp->Next = P->Next; Chọn một
(2) (4) (3) (1)
(1) (2) (3) (4)
(4) (3) (2) (1)
(1) (3) (4) (2)
Cho hàm sau: int Func(int n, int a, int b) { if(n==0) return a*b; else return Func(n-2,a-2,b)*Func(n-2,a,b-2); } Phát biểu nào sau đây là sai? Chọn một
Lời gọi hàm Func(5, 6, 7) không trả về kết quả vì không dừng đệ qui được.
Lời gọi hàm Func(4, 5, 6) trả về kết quả là 8640.
Lời gọi hàm Func(5, 6, 7) không trả về kết quả vì giá trị vượt quá miền giá trị kiểu int.
Lời gọi hàm Func(4, 5, 7) và Func(4, 7,5) trả về kết quả giống nhau.
Phát biểu nào sau đây là đúng? Chọn một đáp án.
Các hàm không thể gọi chính nó.
Ta phải định nghĩa các hàm trước hàm main.
Các hàm chỉ có thể được gọi trong hàm main.
Ta có thể định nghĩa các hàm sau hàm main.
Kiểu dữ liệu trừu tượng là ... Chọn một đáp án.
kiểu dữ liệu mà người lập trình phải tự xây dựng dựa trên các kiểu dữ liệu cơ bản được cung cấp từ ngôn ngữ lập trình.
kiểu dữ liệu mà người lập trình phải tự xây dựng dựa trên các kiểu dữ liệu cơ bản được cung cấp từ ngôn ngữ máy.
kiểu dữ liệu mà người lập trình phải tự xây dựng không dựa trên các kiểu dữ liệu cơ bản được cung cấp từ ngôn ngữ lập trình.
kiểu dữ liệu mà người lập trình phải tự xây dựng dựa trên các kiểu dữ liệu không cơ bản được cung cấp từ ngôn ngữ lập trình.
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 nào? Chọn một đáp án.
Cấu trúc dữ liệu = Giải thuật
Giải thuật + Chương trình = Cấu trúc dữ liệu
Cấu trúc dữ liệu + Chương trình = Giải thuật
Cấu trúc dữ liệu + Giải thuật = Chương trình
Phát biểu nào sau đây là sai? Chọn một đáp án.
Con trỏ là một biến chứa địa chỉ của biến khác.
Biến con trỏ không cho phép chúng ta thâm nhập trực tiếp vào bộ nhớ.
Để con trỏ p trỏ tới x ta phải gán địa chỉ P của x cho p.
Địa chỉ của một biến là địa chỉ byte nhớ đầu tiên của biến đó.
Kiểu dữ liệu nào sau đây là kiểu dữ liệu cơ bản? Chọn một đáp án.
pointer
struct
mảng/dãy
chuỗi
Cho hàm Func được cài đặt trên danh sách liên kết (xem đoạn mã trong hình). Hàm Func trên thực hiện chức năng gì? Chọn một đáp án.
Xóa phần tử đầu tiên trong danh sách L.
Xóa phần tử đứng trước phần tử cuối cùng trong danh sách L.
Xóa phần tử tại vị trí P trong danh sách L.
Xóa phần tử cuối cùng trong danh sách L.
Cho đoạn mã chèn phần tử X vào vị trí P trong danh sách liên kết (xem hình). Hai câu lệnh nào có thể ghép chung thành một? Chọn một đáp án.
(3) và (4)
(2) và (3)
(1) và (2)
(4) và (5)
Xem đoạn mã hàm Func bên dưới rồi chọn chức năng mà hàm thực hiện đối với danh sách liên kết: void Func(List &F1, List F2, { int d=0; Position P=F1; while(d
Ghép danh sách F2 vào chính giữa danh sách L1
Ghép danh sách F2 vào đầu danh sách L1
Ghép danh sách F2 vào trước phần tử thứ vt trong danh sách L1
Ghép danh sách F2 vào sau phần tử thứ vt trong danh sách L1
Cho hàm chèn phần tử X vào ngay sau vị trí P trong danh sách S như mã dưới đây: void InsertList(ElementType X, Position P, List &L) { Position Temp; Temp=new Node; Temp.Element=X; Temp->Next=p->Next; P->Next=Temp; }. Dòng lệnh nào trong đoạn mã sẽ bị báo lỗi khi biên dịch?
(1) Temp=new Node;
(2) Temp.Element=X;
(3) Temp->Next=p->Next;
(4) P->Next=Temp;
Xem bốn đoạn mã A, B, C, D dưới đây, mỗi đoạn là cài đặt hàm InsertList(ElementType X, Position P, List &L) để thêm phần tử X ngay sau P trong danh sách liên kết L. Đoạn mã nào không thể thực hiện việc thêm phần tử X ngay sau P?
A
B
C
D
Hàm nào sau đây thực hiện đúng chức năng thêm 1 phần tử vào đầu danh sách liên kết? Select one.
A
B
C
D
Một danh sách liên kết mà trường liên kết của phần tử cuối giữ địa chỉ của phần tử đầu được gọi là Select one.
danh sách liên kết hạn chế
danh sách liên kết vòng
danh sách liên kết kép
danh sách liên kết đơn
Để quản lý điểm trung bình tích lũy của các sinh viên trong một lớp (không quá 80) người ta có thể khai báo cấu trúc dữ liệu bằng một trong hai cách sau. Phát biểu nào sau đây là đúng? Select one.
cách 1 luôn tốt hơn cách 2
Cách 2 luôn luôn tốt hơn cách 1
Dung lượng trong vùng nhớ của cách 1 không phụ thuộc vào số lượng sinh viên nhưng dung lượng trong vùng nhớ của cách 2 phụ thuộc vào số lượng sinh viên.
Nếu số lượng sinh viên trong một lớp là 65 thì ta nên chọn cách 1 để khai báo
Nếu x là một biến kiểu số nguyên, để con trỏ p trỏ đến biến x ta viết: Select one.
p=x[0];
p=*x;
p=x;
p = &x ;
Các loại danh sách hạn chế là Select one.
Hàng đợi và danh sách liên kết.
Ngăn xếp và xếp hàng chờ
Chồng và hàng đợi
Danh sách đặc và ngăn xếp.
Đặc điểm nào sau đây không phải của hàm có tính đệ quy. Select one
Chương trình dễ viết và dễ đọc nhưng có thể khó hiểu,
Chương trình viết ngắn gọn.
Việc thực hiện gọi đi gọi lại hàm rất nhiều lần phụ thuộc vào độ lớn của đầu vào.
Hàm đệ quy sử dụng vùng nhớ HEAP để lưu địa chỉ các lần gọi đệ quy.
Phát biểu nào sau đây là sai? Đa số các thuật toán có thời gian thực thi tiệm cận tới một trong các hàm sau. Select one
N , NlogN , 2N
N , N2 , 2N
N , N2+2logN
N3 , logN
Với p là biến con trỏ trỏ đến mảng, để giải phóng vùng nhớ cho p ta viết. Select one
free p;
delete p;
delete[] p;
p = free;
Các kiểu dữ liệu cơ bản là .... Select one
các kiểu dữ liệu mà người lập trình được cung cấp sẵn từ máy tính
các kiểu dữ liệu mà người lập trình được cung cấp sẵn từ ngôn ngữ lập trình
các kiểu dữ liệu mà người lập trình được cung cấp sẵn từ ngôn ngữ máy
các kiểu dữ liệu mà người lập trình được cung cấp sẵn từ ngôn ngữ tự nhiên
Phát biểu nào sau đây là sai. Select one
Các đối số mặc định trong hàm được gán thêm giá trị mặc định khi khai báo hàm
Trong lời gọi hàm các đối số mặc định không có đối số thực tế tương ứng thì nó lấy giá trị mặc định để thực hiện
Các đối số mặc định có thể nằm trước hoặc sau đối số không mặc định
Trong hàm ta có thể khai báo các đối số mặc định
Phát biểu nào sau đây là đúng. Select one
Việc tổ chức để lưu trữ dữ liệu phục vụ cho chương trình không có ý nghĩa gì trong toàn bộ hệ thống chương trình
Việc xây dựng cấu trúc dữ liệu không quyết định đến chất lượng cũng như công sức của người lập trình
Giải thuật dùng để chỉ ra phương pháp hay cách thức giải quyết vấn đề.
Giải thuật chỉ có thể được minh hoạ bằng lưu đồ,
Cho hàm Func được cài đặt trên danh sách liên kết, nội dung các phần tử kiểu số nguyên như hình. Để hàm Func thực hiện đúng chức năng thêm phần tử có nội dung X vào sau phần tử có nội dung Y xuất hiện sau cùng vào danh sách L thì câu lệnh (3) phải là.. Select one
Temp->Next = P->Next;
Temp->Next = T->Next;
P->Next = T->Next;
Để có được chương trình ta cần phải xây dựng được cấu trúc dữ liệu, giải thuật và phải sử dụng được ... Select one
ngôn ngữ lập trình
thuật toán
cấu trúc chương trình
dữ liệu
Cho ngăn xếp S với kiểu phần tử là char đã có sẵn các phép toán cơ bản MakeNullStack (Tạo 1 ngăn xếp), EriptyStack (Kiểm tra ngăn xếp rỗng (T or F)), Push (Thêm phần tử X vào đỉnh NX), Top (Trả về), Pop (Xóa). Hãy cho biết kết quả in trên màn hình sau khi thực hiện xong chuỗi thao tác: KH#OAI#CON##GNGH#E##. Với qui ước đã khởi tạo ngăn xếp S trước khi thực hiện chuỗi thao tác, mỗi chữ cái tượng trưng cho một thao tác thêm chữ cái đó vào ngăn xếp S, mỗi dấu # tượng trưng cho một thao tác lấy nội dung một phần tử ở đỉnh ngăn xếp S in lên màn hình và xóa phần tử này. Select one
HANOHEG
HAONENG
HANDEHG
HAONHEG
Danh sách thường được phân thành bao nhiêu loại. Select one
4 loại
5 loại
2 loại
3 loại
Giả sử trong danh sách liên kết đơn đã cài đặt các phép toán cơ bản sau: FIRST(List L): xác định phần tử đầu tiên của danh sách, INSERTLIST(ElementType X, Position P. List &L) cho phép thêm một phần tử có nội dung là X vào sau vị trí P trong danh sách liên kết PREVIUS(Position P. List L), La về phần tử phía trước P. Câu lệnh nào sau đây cho phép thêm một phần tử vào đầu danh sách? Select one:
INSERTLIST(X, L, L);
INSERTLIST(X, PREVIOUS(FIRST(L)), L);
INSERTLISTX. PREVIOUS(L), L)
INSERTLISTOXX, FIRST(L), LX
Khai báo nào sau đây không đúng cho hàm thực hiện chức năng tách danh sách liên kết L1 thành hai danh sách L2 và L3? Select one:
void Split(List L1, List &L2. List &L3);
void Split(List L1. List &L3):
List Split(List L1. List &L2):
void Split(List &L1, List L2. List L3):
Phát biểu nào sau đây là sai? Select one:
Phép toán cơ bản trên hàng đợi là insertqueue
Phép toán cơ bản trên hàng đợi là dequeue
Phép toán cơ bản trên hàng đại là emptyqueue
Phép toán cơ bản trên hàng đợi là enqueue
