Menu
CoddyTech
Lộ trình học

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

C chỉ cho bạn mảng, struct và con trỏ, không có gì khác, nên mọi cấu trúc trong lộ trình này đều do bạn tự xây: một stack từ mảng, một danh sách liên kết từ malloc, một bảng băm từ các bucket chứa node. Đây là môn học kinh điển ở đại học, học qua thực hành, tiếp theo là sắp xếp, đệ quy, đồ thị và các bài phỏng vấn được chấm điểm. Miễn phí, ngay trên trình duyệt, phần lớn khóa học có chứng nhận.

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

Cấu trúc dữ liệu trong C, từng bước một

38 khóa học377 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. Ba 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 struct, con trỏ và malloc, rồi dùng để giải bài toán. Năm cấu trúc đứng sau phần lớn câu hỏi phỏng vấn, với từng byte đều được kiểm soá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. Trong C, trie là một mảng con trỏ con ở mỗi node và đồ thị là một mảng danh sách kề, nên đây là bước khiến con trỏ trở thành phản xạ tự 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. Hàm sắp xếp duy nhất của thư viện chuẩn, qsort, nhận một con trỏ hàm so sánh; sau bước này, bạn có thể viết cả hàm so sánh lẫn thuật toán sắp xếp đằng sau nó.Bắt đầu
  4. 4
    Bắt đầu bước nàyBắt đầuThử thách đệ quy bằng C. Quy hoạch động (dạy bằng Python) và thao tác bit (dạy bằng C++) được liệt kê sau các bước, và khóa thứ hai gần với C hơn bạn nghĩ: C++ giữ nguyên các toán tử bit của C.Bắt đầuTrang riêng
  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 cấu trúc dữ liệu trong C trên Coddy

  • Không có gì bị che giấu. Thư viện chuẩn của C không có list, map hay queue, nên không có gì dựng sẵn để dựa vào: mỗi node là một struct, mỗi liên kết là một con trỏ, mỗi lần cấp phát là một malloc bạn phải tự giải phóng. Những cấu trúc học theo cách này là những cấu trúc bạn sẽ hiểu ở mọi ngôn ngữ khác về sau.
  • Môn học đại học, học qua thực hành. Cấu trúc dữ liệu trong C là môn cốt lõi ở nhiều chương trình khoa học máy tính. Lộ trình này đi qua cùng nội dung đó, từ stack đến cây AVL, các thuật toán sắp xếp và đồ thị, dưới dạng code bạn chạy và được chấm điểm ngay khi viết.
  • Gần như toàn bộ lộ trình bằng C. Mọi cấu trúc dữ liệu, thuật toán sắp xếp, thuật toán đồ thị, thử thách đệ quy và bộ bài phỏng vấn đều được dạy bằng C. Ba phần không dạy bằng C, gồm quy hoạch động và chuỗi bài phỏng vấn Python (bằng Python) cùng thao tác bit (bằng C++, vốn giữ nguyên các toán tử bit của C), được 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ề cấu trúc dữ liệu trong C

Vì sao nên học cấu trúc dữ liệu trong C?

Vì C không che giấu điều gì. Không có list, map hay queue dựng sẵn, bạn phải tự cài đặt mọi cấu trúc từ các khối bộ nhớ và con trỏ, và đó chính xác là bản chất của cấu trúc đó. Sau đó, HashMap của Java và dict của Python chỉ là cùng những ý tưởng ấy với phần quản lý bộ nhớ đã được làm sẵn, và bạn có thể suy luận được chúng tốn kém những gì.

Cần biết gì trước khi học cấu trúc dữ liệu trong C?

Con trỏ, struct, mảng, cùng malloc và free. Quan trọng nhất là con trỏ: danh sách liên kết là một chuỗi các trường struct node *next, còn cây nhị phân có hai trường như vậy ở mỗi node. Nếu bạn vẫn chưa vững con trỏ, khóa học C của Coddy dạy phần này trước, miễn phí.

Cài đặt bảng băm trong C như thế nào?

Với một mảng các bucket, một hàm băm biến khóa thành chỉ số, và một quy tắc cho trường hợp hai khóa rơi vào cùng một bucket: thường là một danh sách liên kết cho mỗi bucket (chaining) hoặc dò tìm ô trống tiếp theo (probing). Khi bảng đầy quá một hệ số tải đã định, bạn cấp phát một mảng lớn hơn và chèn lại mọi phần tử. Khóa học bảng băm ở bước một xây một bảng băm từ con số 0.

C có phải ngôn ngữ tốt cho phỏng vấn lập trình không?

Ngoài các vị trí lập trình nhúng và hệ thống, ít ứng viên phỏng vấn bằng C, vì tự viết một bảng băm từ đầu giữa buổi phỏng vấn tốn thời gian mà ngôn ngữ khác cho bạn sẵn. Dù vậy, kiến thức thì chuyển sang được hoàn toàn, và C++ chỉ cách một bước nhỏ: cùng cú pháp, cộng thêm STL. Một con đường phổ biến là học các cấu trúc bằng C, rồi làm các bộ bài phỏng vấn bằng C++, Java hoặc Python, tất cả đều có trong lộ trình này.

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

Ba khóa: quy hoạch động và chuỗi bài phỏng vấn Python được dạy bằng Python, còn thao tác bit được dạy bằng C++. Chúng được liệt kê sau các bước, mỗi khóa có một liên kết mở nó bằng ngôn ngữ của riêng nó. Thao tác bit là khóa dễ theo nhất từ C: C++ giữ nguyên &, |, ^, ~, << và >> của C.

Nên học cấu trúc dữ liệu bằng C hay C++?

C để hiểu các cấu trúc, C++ để sử dụng chúng. Trong C, bạn tự xây mọi thứ, đó là lý do rất nhiều trường đại học dạy môn này bằng C; trong C++, bạn xây mỗi cấu trúc một lần rồi dùng STL, đó là lý do dân lập trình thi đấu dùng nó. Bắt đầu bằng C rồi chuyển sang C++ không làm bạn mất gì 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