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:
Trả lời:
Đáp án đúng: A
Trong lập trình, chương trình thường được xây dựng dựa trên sự kết hợp giữa cấu trúc dữ liệu (cách tổ chức và lưu trữ dữ liệu) và giải thuật (các bước để giải quyết một vấn đề). Đẳng thức đúng thể hiện mối quan hệ này là: Cấu trúc dữ liệu + Giải thuật = Chương trình.
Đề cương ôn thi với 220 câu trắc nghiệm Cấu trúc dữ liệu và giải thuật có đáp án được chọn lọc và chia sẻ dưới đây, nhằm giúp bạn sinh viên hệ thống kiến thức chuẩn bị cho kì thi sắp diễn ra.
50 câu hỏi 60 phút
Câu hỏi liên quan
Lời giải:
Đáp án đúng: C
Đoạn code cung cấp một hàm tìm kiếm tuyến tính `TimKiem` trong một mảng `M` có kích thước `N` để tìm giá trị `X`. Hàm này hoạt động bằng cách gán `X` vào vị trí `M[N]` (vượt quá kích thước mảng ban đầu) để đảm bảo vòng lặp `while` luôn kết thúc. Sau đó, nó duyệt qua mảng từ đầu đến khi tìm thấy `X`. Nếu `X` được tìm thấy trước vị trí `N`, hàm trả về chỉ số `k` của vị trí đó. Nếu không (tức là `X` chỉ được tìm thấy tại vị trí `M[N]` mà ta đã gán), hàm trả về -1.
Vậy, nếu không tìm thấy `X` trong `N` phần tử đầu tiên của mảng, hàm sẽ trả về -1. Do đó, phương án đúng là "Hàm sẽ trả về -1 nếu không tìm thấy phần tử có giá trị là X".
Vậy, nếu không tìm thấy `X` trong `N` phần tử đầu tiên của mảng, hàm sẽ trả về -1. Do đó, phương án đúng là "Hàm sẽ trả về -1 nếu không tìm thấy phần tử có giá trị là X".
Lời giải:
Đáp án đúng: B
Đề bài cung cấp một đoạn mã C++ thực hiện thuật toán tìm kiếm nhị phân (binary search) một cách đệ quy. Ta cần xác định mô tả chính xác nhất về chức năng của đoạn mã này.
* Phân tích mã:
* Hàm `TimKiemNP` nhận vào một mảng `M`, chỉ số đầu `First`, chỉ số cuối `Last`, và giá trị cần tìm `X`.
* Nếu `First > Last`, hàm trả về -1, nghĩa là không tìm thấy `X` trong mảng.
* Tính chỉ số giữa `Mid = (First + Last) / 2`.
* Nếu `X == M[Mid]`, hàm trả về `Mid` (vị trí tìm thấy).
* Nếu `X < M[Mid]`, hàm gọi đệ quy `TimKiemNP` với nửa đầu của mảng (`First` đến `Mid - 1`).
* Ngược lại (`X > M[Mid]`), hàm gọi đệ quy `TimKiemNP` với nửa sau của mảng (`Mid + 1` đến `Last`).
* Xét các phương án:
* Phương án 1: "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". Đúng một phần, nhưng chưa đủ chính xác vì không đề cập đến tính đệ quy.
* Phương án 2: "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". Đây là mô tả chính xác nhất. Nó chỉ rõ thuật toán tìm kiếm và phương pháp đệ quy được sử dụng, đồng thời xác định rõ phạm vi tìm kiếm (từ `First` đến `Last`).
* Phương án 3: "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". Sai, vì thứ tự chỉ số tìm kiếm là từ `First` đến `Last`, không phải ngược lại. Thuật toán tìm kiếm nhị phân yêu cầu mảng được sắp xếp và tìm kiếm theo thứ tự tăng dần của chỉ số.
* Phương án 4: "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". Sai, vì thuật toán sử dụng đệ quy và thứ tự chỉ số tìm kiếm cũng sai.
Vậy phương án 2 là đáp án chính xác nhất.
* Phân tích mã:
* Hàm `TimKiemNP` nhận vào một mảng `M`, chỉ số đầu `First`, chỉ số cuối `Last`, và giá trị cần tìm `X`.
* Nếu `First > Last`, hàm trả về -1, nghĩa là không tìm thấy `X` trong mảng.
* Tính chỉ số giữa `Mid = (First + Last) / 2`.
* Nếu `X == M[Mid]`, hàm trả về `Mid` (vị trí tìm thấy).
* Nếu `X < M[Mid]`, hàm gọi đệ quy `TimKiemNP` với nửa đầu của mảng (`First` đến `Mid - 1`).
* Ngược lại (`X > M[Mid]`), hàm gọi đệ quy `TimKiemNP` với nửa sau của mảng (`Mid + 1` đến `Last`).
* Xét các phương án:
* Phương án 1: "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". Đúng một phần, nhưng chưa đủ chính xác vì không đề cập đến tính đệ quy.
* Phương án 2: "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". Đây là mô tả chính xác nhất. Nó chỉ rõ thuật toán tìm kiếm và phương pháp đệ quy được sử dụng, đồng thời xác định rõ phạm vi tìm kiếm (từ `First` đến `Last`).
* Phương án 3: "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". Sai, vì thứ tự chỉ số tìm kiếm là từ `First` đến `Last`, không phải ngược lại. Thuật toán tìm kiếm nhị phân yêu cầu mảng được sắp xếp và tìm kiếm theo thứ tự tăng dần của chỉ số.
* Phương án 4: "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". Sai, vì thuật toán sử dụng đệ quy và thứ tự chỉ số tìm kiếm cũng sai.
Vậy phương án 2 là đáp án chính xác nhất.
Lời giải:
Đáp án đúng: D
Câu hỏi này kiểm tra kiến thức về ưu điểm của cấu trúc dữ liệu mảng. Chúng ta cùng phân tích từng đáp án:
- Đáp án 1: Đúng. Mảng có nhược điểm là việc chèn hoặc xóa phần tử ở giữa mảng đòi hỏi phải dịch chuyển các phần tử khác, gây tốn thời gian.
- Đáp án 2: Đúng. Ưu điểm lớn nhất của mảng là khả năng truy xuất ngẫu nhiên (random access) thông qua chỉ số, giúp việc tìm kiếm và truy cập phần tử nhanh chóng.
- Đáp án 3: Sai. Mảng có thể lãng phí bộ nhớ nếu kích thước mảng được khai báo lớn hơn số lượng phần tử thực tế được sử dụng.
- Đáp án 4: Sai. Vì đáp án c sai.
Vậy, đáp án đúng nhất là đáp án b.
Lời giải:
Đáp án đúng: B
Trong cấu trúc danh sách liên kết đơn, mỗi node (phần tử) chứa hai thành phần chính: dữ liệu (Key) và một con trỏ (NextNode). Con trỏ NextNode này có chức năng lưu trữ địa chỉ của node kế tiếp trong danh sách. Nhờ đó, các node được liên kết với nhau một cách tuần tự. Vì vậy, khai báo `Node * NextNode;` dùng để mô tả vùng liên kết quản lý địa chỉ phần tử kế tiếp.
Lời giải:
Đáp án đúng: B
Câu hỏi yêu cầu chọn kiểu dữ liệu phù hợp để quản lý danh sách liên kết đơn có phần tử đầu và phần tử cuối.
Phương án 1: `SLLPointer DanhSach;` chỉ khai báo một con trỏ, không đủ để quản lý cả phần tử đầu và cuối.
Phương án 2: `typedef struct SSLLIST { SLLPointer First; SLLPointer Last; } LIST; LIST DanhSach;` Khai báo một struct `SSLLIST` chứa hai con trỏ `First` và `Last`, lần lượt trỏ đến phần tử đầu và phần tử cuối của danh sách liên kết đơn. Sau đó, khai báo một biến `DanhSach` kiểu `LIST` để lưu trữ thông tin về danh sách. Đây là cách tiếp cận phù hợp.
Phương án 3: `typedef struct SSLLIST { SLLPointer First; SLLPointer Last; int total; } LIST; LIST DanhSach;` Tương tự phương án 2 nhưng thêm một biến `total` để lưu tổng số phần tử. Tuy nhiên, câu hỏi chỉ yêu cầu quản lý phần tử đầu và cuối, không yêu cầu lưu tổng số phần tử.
Phương án 4: `typedef struct SSLLIST { SLLPointer First; int total; } LIST; LIST DanhSach;` Chỉ lưu phần tử đầu và tổng số phần tử, thiếu phần tử cuối.
Vậy phương án 2 là đáp án đúng nhất vì nó định nghĩa một cấu trúc chứa con trỏ đến cả phần tử đầu và phần tử cuối của danh sách liên kết đơn, đáp ứng đúng yêu cầu của đề bài.
Phương án 1: `SLLPointer DanhSach;` chỉ khai báo một con trỏ, không đủ để quản lý cả phần tử đầu và cuối.
Phương án 2: `typedef struct SSLLIST { SLLPointer First; SLLPointer Last; } LIST; LIST DanhSach;` Khai báo một struct `SSLLIST` chứa hai con trỏ `First` và `Last`, lần lượt trỏ đến phần tử đầu và phần tử cuối của danh sách liên kết đơn. Sau đó, khai báo một biến `DanhSach` kiểu `LIST` để lưu trữ thông tin về danh sách. Đây là cách tiếp cận phù hợp.
Phương án 3: `typedef struct SSLLIST { SLLPointer First; SLLPointer Last; int total; } LIST; LIST DanhSach;` Tương tự phương án 2 nhưng thêm một biến `total` để lưu tổng số phần tử. Tuy nhiên, câu hỏi chỉ yêu cầu quản lý phần tử đầu và cuối, không yêu cầu lưu tổng số phần tử.
Phương án 4: `typedef struct SSLLIST { SLLPointer First; int total; } LIST; LIST DanhSach;` Chỉ lưu phần tử đầu và tổng số phần tử, thiếu phần tử cuối.
Vậy phương án 2 là đáp án đúng nhất vì nó định nghĩa một cấu trúc chứa con trỏ đến cả phần tử đầu và phần tử cuối của danh sách liên kết đơn, đáp ứng đúng yêu cầu của đề bài.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp
136 tài liệu563 lượt tải

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp
125 tài liệu585 lượt tải

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng
325 tài liệu608 lượt tải

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất
331 tài liệu1010 lượt tải

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
246 tài liệu802 lượt tải

CEO.22: Bộ Tài Liệu Quy Trình Kiểm Toán, Kiểm Soát Nội Bộ Doanh Nghiệp
138 tài liệu417 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng