Menu
CoddyTech
Lộ trình học

Cấu trúc dữ liệu và giải thuật trong C++

STL chính là lộ trình này dưới dạng thư viện: std::vector, std::unordered_map, std::priority_queue và std::set là mảng động, bảng băm, heap và cây cân bằng. Tự xây từng cấu trúc bằng C++ với lớp và con trỏ, rồi dùng STL khi đã biết mỗi lời gọi tốn kém thế nào. Thao tác bit được dạy ngay bằng C++. Miễn phí, ngay trên trình duyệt, phần lớn khóa học có chứng nhận.

394 bài học284 thử thách702 câu hỏi trắc nghiệm

DSA bằng C++, từng bước một

39 khóa học394 bài học284 thử thách702 câu hỏi trắc nghiệm

Mỗi bước là một nhóm khóa học có sẵn trên Coddy, và mọi nút Bắt đầu đều mở chúng bằng C++. Hai khóa học chưa dạy bằng C++ được liệt kê sau các bước.

  1. 1
    Bắt đầu bước nàyBắt đầuStack, queue, cây nhị phân, bảng băm và danh sách liên kết, mỗi cấu trúc được xây từ con số 0 trong C++ với lớp và con trỏ, rồi dùng để giải bài toán. Sau bước này, std::stack, std::queue và std::unordered_map là những cấu trúc bạn đã tự viết.Bắt đầu
  2. 2
    Bắt đầu bước nàyBắt đầuDanh sách liên kết đôi, heap và hàng đợi ưu tiên, trie, đồ thị và cây AVL tự cân bằng. std::priority_queue mặc định là max-heap, trong khi heap của Python và Java là min-heap; một khi đã tự viết heap, việc đảo chiều nó bằng std::greater trở nên hiển nhiên.Bắt đầu
  3. 3
    Bắt đầu bước nàyBắt đầuBubble sort, selection sort, insertion sort, merge sort, quick sort, heap sort, counting sort và radix sort, viết bằng C++ và quan sát trong công cụ trực quan hóa. std::sort thường là introsort, tức quicksort chuyển sang heapsort khi cần, còn std::stable_sort là merge sort; bước này giải thích vì sao những lựa chọn đó hợp lý.Bắt đầu
  4. 4
    Bắt đầu bước nàyBắt đầuThử thách đệ quy và thao tác bit, cả hai đều bằng C++, ngôn ngữ mà khóa học thao tác bit được viết cho. Quy hoạch động được dạy bằng Python và liệt kê sau các bước; bảng ghi nhớ của nó chuyển thẳng sang std::vector.Bắt đầu
  5. 5
  6. 6
Bạn nhận được gì
Mọi thứ bạn sẽ dùng để học lập trình

Học qua thực hành

Viết code thật, truy vấn cơ sở dữ liệu, xây dựng trang web và làm chủ prompt AI. Các bài học tương tác bao quát mọi kỹ năng mà lập trình viên hiện đại cần.

playground.js
Trình chỉnh sửa code
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Đầu vào
"Alex"
Đầu ra
"Hello, Coddy! Alex"

Xây dựng streak

Học đều đặn và nhìn tiến độ của bạn lớn dần! Theo dõi thói quen code mỗi ngày, bảo vệ streak bằng ngày đóng băng và nhận phần thưởng khi học mỗi ngày.

12 ngày streak

Quay lại ngày mai để giữ streak!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Gấp đôi hoặc mất hết

Ngày 5/7

fire Freeze icon

Đóng băng streak

2 left

Code ở mọi nơi

Mang hành trình lập trình theo bên mình! Không cài đặt, không tải về: chỉ cần mở ra và bắt đầu code. Có trên iOS, Android và Web với đánh giá 4,9 sao.

Python
7Streak
250Điểm
5Năng lượng
Biến
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
Tiếp tục
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Hành trình
Mục tiêu
Bảng xếp hạng
Hồ sơ
4.9
Ngôi saoNgôi saoNgôi saoNgôi saoNgôi sao
Đánh giá

Bạn không đơn độc

Thi đấu trên bảng xếp hạng toàn cầu, mời bạn bè để nhận phần thưởng và cùng nhau ăn mừng thành công. Học code cùng bạn bè vui hơn nhiều!

Giải đấu Challenger
Giải đấu ChallengerTop 7 được thăng hạng
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconVùng thăng hạngleaderboard Arrow Up icon

Mọi cách để học

Đọc, nghe, tự kiểm tra, hỏi AI hoặc tra cứu bất cứ điều gì bạn đã học. Mỗi bài học phù hợp với trình độ của bạn.

Giới thiệu về biến
Âm thanh

Biến là một vùng chứa có tên, lưu một giá trị mà bạn có thể dùng lại sau trong chương trình.

Trong Python, bạn tạo biến bằng cách viết tên, dấu bằng, rồi giá trị muốn lưu.

Giá trị có thể thay đổi theo thời gian. Gán lại tên đó chỉ đơn giản là trỏ nó tới một giá trị mới.

1xSarah

Nhận chứng nhận

Nhận chứng nhận cho mỗi khóa học bạn hoàn thành. Thêm vào hồ sơ LinkedIn và CV để cho nhà tuyển dụng thấy kỹ năng lập trình của bạn.

CoddyGiấy chứng nhận hoàn thành
Chứng nhận rằngNguyễn Văn Anđã hoàn thành xuất sắc
python iconPython cơ bản
Đã xác minh
NgàyTh1 2026
LinkedInThêm vào LinkedIn

Vì sao nên học DSA bằng C++ trên Coddy

  • Ngôn ngữ của lập trình thi đấu. Phần lớn dân lập trình thi đấu viết C++ vì tốc độ và STL, và C++ được chấp nhận ở gần như mọi buổi phỏng vấn lập trình. Học DSA bằng C++ là học đúng ngôn ngữ mà các cuộc thi dùng.
  • Con trỏ bạn nhìn thấy được. Danh sách liên kết trong C++ là các node và con trỏ, một phép xoay AVL là vài lần dịch chuyển con trỏ, và hàm hủy giải phóng những gì bạn đã cấp phát. Bạn học các cấu trúc theo đúng cách máy tính lưu trữ chúng, rồi để STL làm thay cho bạn.
  • Thao tác bit bằng chính ngôn ngữ của nó. Khóa học thao tác bit của lộ trình được dạy bằng C++, nên ở đây nó không phải đường vòng: mask, phép dịch bit và các mẹo bit đến ngay trong ngôn ngữ bạn đang viết. Chỉ có quy hoạch động và chuỗi bài phỏng vấn Python là không: chúng được dạy bằng Python và liệt kê sau các bước.
  • Chấm điểm như một buổi phỏng vấn. Mọi bài học đều kết thúc bằng một thử thách C++ được kiểm tra bằng test case, và khi một test thất bại, Bugsy đọc code của bạn và gợi hướng cho bạn tự sửa mà không đưa luôn đáp án. Phần lớn khóa học có chứng nhận miễn phí, mỗi chứng nhận xác minh được tại URL riêng.

Câu hỏi thường gặp về DSA bằng C++

C++ có tốt cho cấu trúc dữ liệu và giải thuật không?

C++ là lựa chọn phổ biến nhất cho lập trình thi đấu và là lựa chọn mạnh cho phỏng vấn: nhanh, với thư viện chuẩn bao quát gần như mọi cấu trúc bạn cần. Cái giá là nhiều code hơn và nhiều cách để sai hơn, từ con trỏ treo đến iterator bị vô hiệu hóa. Tự xây các cấu trúc trước, như lộ trình này làm, là cách để những điều đó không còn gây bất ngờ.

Container STL nào tương ứng với cấu trúc dữ liệu nào?

std::vector là mảng động, std::stack và std::queue mặc định là adaptor bọc ngoài std::deque, std::list là danh sách liên kết đôi, std::unordered_map và std::unordered_set là bảng băm, std::priority_queue là binary heap (mặc định là max-heap, khác với Python và Java), còn std::map và std::set là cây tìm kiếm nhị phân cân bằng, trong thực tế là cây đỏ đen. Không có container cho trie hay đồ thị; bạn tự viết chúng.

Nên tự cài đặt cấu trúc dữ liệu hay chỉ dùng STL?

Cả hai, theo thứ tự đó. Tự cài đặt mỗi cấu trúc một lần, để bạn biết vì sao tra cứu trong std::unordered_map trung bình có thời gian hằng số và vì sao std::map giữ các khóa được sắp xếp, rồi dùng STL ở mọi nơi sau đó. Trong cuộc thi hay buổi phỏng vấn, không ai mong bạn tự viết cây đỏ đen; họ mong bạn chọn đúng container và biết chi phí của nó.

Nên học DSA bằng C++ hay Python?

C++ nếu bạn định lập trình thi đấu hoặc phỏng vấn ở nơi yêu cầu C++; Python nếu bạn muốn con đường ngắn nhất từ ý tưởng đến code chạy được. Các thuật toán giống hệt nhau, nên nhiều người học bằng ngôn ngữ này và thi đấu bằng ngôn ngữ kia. Mọi khóa học cấu trúc dữ liệu trong lộ trình này đều được dạy bằng cả hai.

Những khóa học nào trong lộ trình này không dạy bằng C++?

Hai khóa: quy hoạch động và chuỗi bài phỏng vấn Python, cả hai đều dạy bằng Python. Chúng được liệt kê sau các bước, kèm liên kết mở chúng bằng Python. Các ý tưởng chuyển sang nguyên vẹn: trong C++, bảng ghi nhớ là một std::vector hoặc một std::unordered_map.

Có cần biết C++ trước khi bắt đầu lộ trình này không?

Ít nhất là lớp, con trỏ, tham chiếu và std::vector. Nếu những thứ đó còn mới, khóa học C++ của Coddy dạy chúng trước, miễn phí, và lộ trình này tiếp nối ngay từ chỗ khóa học đó kết thúc.

Tôi có nhận được chứng nhận cho lộ trình Cấu trúc dữ liệu & thuật toán không?

Có. Hoàn thành mọi bước và bạn nhận một chứng nhận miễn phí cho cả lộ trình Cấu trúc dữ liệu & thuật toán. Chứng nhận liệt kê từng khóa học bạn đã hoàn thành trên đường đi và liên kết đến chứng nhận riêng của từng khóa, để ai cũng có thể kiểm tra mọi kỹ năng được nêu. Bạn có thể thêm nó vào hồ sơ LinkedIn. Đây là chứng nhận hoàn thành của Coddy, không phải văn bằng được kiểm định.

Các lộ trình học khác

Cùng các khóa học, sắp xếp cho một vai trò khác. Tiến độ được giữ lại: khóa học đã hoàn thành ở một lộ trình được tính ở mọi lộ trình có khóa học đó.

Tất cả lộ trình học
Hình minh họa các ngôn ngữ lập trình của Coddy

Bắt đầu lộ trình Cấu trúc dữ liệu & thuật toán miễn phí

Bắt đầu học