Xin chào cả nhà ! em tìm được trên mạng khá nhiều tài liệu về môn cấu trúc dữ liệu nhưng nó không dùng ngôn ngữ trường em dạy ( trường em dạy môn này bằng java ) không biết có gì khác khác nhau không nhỉ ? hay ngôn ngữ nào cũng được ?em cảm ơn ạ !
Môn cấu trúc dữ liệu và giải thuật có phụ thuộc ngôn ngữ?
Hầu như là không phụ thuộc vào ngôn ngữ lập trình cho nên bạn yên tâm nhé.
cái này rèn luyện tư duy lập trình nên không phụ thuộc vào ngôn ngữ lập trình.
Nếu làm trên mấy ngôn ngữ thuần hàm hay dị dị kiểu Rust thì…có.
Mình thì hơi phũ, CTDL> có phụ thuộc vào ngôn ngữ.
Bạn thử áp dụng cách hiện thực cấu trúc dữ liệu vào Erlang xem. :v
Kể cả cùng ngôn ngữ tựa tựa nhau nó cũng khác. Nếu tuân thủ coding style của từng ngôn ngữ, như với mình là JS, C++ và Ruby, chẳng thằng nào giống thằng nào. :v
Nếu bạn đọc sách giải thuật (như CLRS, TAOCP) thì tác giả cũng có chú ý 1 đoạn về lược bỏ mấy thứ linh tinh của ngôn ngữ lập trình, mấy ổng lười đến mức sáng tác ra mã giả để cho nhẹ đầu.
Riêng Java thì đọc quyển này: Algorithms (4th Edition)
Java thì ko thiếu tài liệu
Lý thuyết có thể đọc https://www.geeksforgeeks.org/
Muốn luyện code thì https://www.hackerrank.com/domains/algorithms
ko hiểu phần nào của giải thuật bị lệ thuộc ngôn ngữ? Sort? Graph theory? Dynamic programming? Greedy? Computational Geometry? FFT? Tương tự với data structures :V Một số ngôn ngữ ko có AVL tree vì có ctdl khác lẹ và tiện hơn chứ đâu phải ko viết được?
CTDL và GT hoàn toàn ko phụ thuộc ngôn ngữ. Ngôn ngữ mới thiếu algo gì thì đi code algo đấy chứ làm gì có algo mà ngôn ngữ X ko viết được :V
Nói thế này cho tròn, môn này như tên của nó là dạy về cấu trúc dữ liệu và giải thuật, nó mang tính là đi mô hình hóa vấn đề, còn áp dụng nó vào lập trình thì còn phải tùy vào việc ngôn ngữ đó có các cú pháp cho phép mô hình hóa như môn học hay không. Ví dụ như gặp một ngôn ngữ mà lại không có cú pháp tạo mảng và xử lý mảng thì căng đấy
Thực ra cái mà gọi là “phụ thuộc ngôn ngữ” ở đây nó lại là việc mình có áp dụng môn học cho mọi ngôn ngữ lập trình hay không. Chứ bạn học môn này thì xài pseudo-code cũng được, không khác mấy việc học toán.
Không phụ thuộc ngôn ngữ, nếu nó mà phụ thuộc ngôn ngữ thì không gọi là cấu trúc dữ liệu và giải thuật