- Cấu trúc dữ liệu là phương pháp tổ chức và lưu trữ thông tin trong máy tính để tối ưu hiệu suất.
- Việc chọn cấu trúc dữ liệu phù hợp như mảng, danh sách liên kết, hay cây ảnh hưởng lớn đến chất lượng và hiệu suất chương trình.
- Các ngôn ngữ lập trình hiện đại cung cấp hỗ trợ cho cấu trúc dữ liệu qua thư viện chuẩn và module.
- Các cấu trúc dữ liệu phổ biến bao gồm mảng, ngăn xếp, hàng đợi, bảng băm, danh sách liên kết, cây và đồ thị.
Cây nhị phân, một loại cấu trúc dữ liệu đơn giản với các nhánh liên kết.Bảng băm
Trong lĩnh vực khoa học máy tính, cấu trúc dữ liệu là phương pháp tổ chức và lưu trữ thông tin trong máy tính để đạt hiệu quả cao nhất.
Khi thiết kế các chương trình, việc lựa chọn cấu trúc dữ liệu phù hợp là rất quan trọng. Kinh nghiệm trong phát triển hệ thống lớn cho thấy rằng sự thành công của chương trình, cũng như chất lượng và hiệu suất của kết quả cuối cùng, phụ thuộc rất nhiều vào việc chọn cấu trúc dữ liệu tối ưu.
Mỗi cấu trúc dữ liệu được thiết kế cho những ứng dụng khác nhau; một số được tối ưu hóa cho các nhiệm vụ cụ thể như B-tree cho cơ sở dữ liệu. Đôi khi, lựa chọn cấu trúc dữ liệu dựa trên thuật toán tối ưu cho các bài toán đặc biệt, và ngược lại, thuật toán phù hợp với cấu trúc dữ liệu đã chọn. Việc lựa chọn cấu trúc dữ liệu rất quan trọng.
Tổng quan
Việc chọn cấu trúc dữ liệu phù hợp thường dẫn đến hiệu suất tốt hơn cho thuật toán. Quá trình này bắt đầu từ việc lựa chọn cấu trúc dữ liệu trừu tượng, giúp thực hiện nhiều phép toán với ít tài nguyên hơn. Cấu trúc dữ liệu được xây dựng từ kiểu dữ liệu, tham chiếu và phép toán do ngôn ngữ lập trình cung cấp.
Những hiểu biết về cấu trúc dữ liệu đã dẫn đến sự phát triển của nhiều ngôn ngữ lập trình và phương pháp thiết kế, trong đó cấu trúc dữ liệu đóng vai trò quan trọng hơn thuật toán. Hầu hết các ngôn ngữ hiện nay hỗ trợ tái sử dụng cấu trúc dữ liệu qua các hệ thống module và giao diện, đặc biệt trong các ngôn ngữ hướng đối tượng như C++ và Java.
Vì cấu trúc dữ liệu là yếu tố quyết định trong các chương trình chuyên nghiệp, nên các ngôn ngữ lập trình hiện đại đều cung cấp hỗ trợ qua các thư viện chuẩn như C++, Java API và Microsoft .NET Framework.
Các cấu trúc dữ liệu cơ bản thường gặp bao gồm mảng, bản ghi, tổ hợp phân biệt và tham chiếu. Chẳng hạn, tham chiếu có giá trị null là sự kết hợp của tham chiếu và tổ hợp phân biệt, trong khi danh sách liên kết, một cấu trúc dữ liệu liên kết đơn giản, được tạo thành từ bản ghi và tham chiếu có thể null.
Các nguyên tắc cơ bản
Ngôn ngữ hỗ trợ
Nhiều hợp ngữ và ngôn ngữ lập trình cấp thấp như BCPL không hỗ trợ cấu trúc dữ liệu sẵn có. Tuy nhiên, ngôn ngữ lập trình cấp cao và một số hợp ngữ mức cao cung cấp cú pháp hoặc chức năng hỗ trợ các cấu trúc dữ liệu như bản ghi và mảng. Ví dụ, ngôn ngữ C và Pascal cung cấp hỗ trợ cho kiểu cấu trúc và bản ghi cùng với mảng một chiều và đa chiều.
Hầu hết các ngôn ngữ lập trình đều có thư viện hỗ trợ việc xây dựng cấu trúc dữ liệu, như bộ thư viện chuẩn C++, Java Collections Framework và .Net Framework.
Các cấu trúc dữ liệu phổ biến
- Mảng (array list)
- Ngăn xếp (stack)
- Hàng đợi (queue)
- Bảng băm (hash table)
- Danh sách liên kết (linked list)
- Cây (tree)
- Đồ thị (graph)
- Các cấu trúc dữ liệu
- Mô hình dữ liệu
- Danh sách liên kết
Đọc thêm
- Peter Brass, Advanced Data Structures, Cambridge University Press, 2008.
- Donald Knuth, The Art of Computer Programming, vol. 1. Addison-Wesley, 3rd edition, 1997.
- Dinesh Mehta và Sartaj Sahni, Handbook of Data Structures and Applications, Chapman and Hall/CRC Press, 2007.
- Niklaus Wirth, Algorithms and Data Structures, Prentice Hall, 1985.
Liên kết tham khảo
- Khóa học video về cấu trúc dữ liệu của UC Berkeley
- Mô tả từ Từ điển Cấu trúc và Thuật toán Dữ liệu
- CSE.unr.edu
- Khóa học cấu trúc dữ liệu với hình ảnh động
- Hướng dẫn cấu trúc dữ liệu với hình ảnh động Lưu trữ 2012-06-18 tại Wayback Machine
- Xem xét cấu trúc dữ liệu từ góc độ .NET
- Schaffer, C. Phân tích Cấu trúc Dữ liệu và Thuật toán
Cấu trúc dữ liệu
Kiểu
Collection · Container
Trừu tượng
Danh sách · Mảng kết hợp · Multimap · Set · Multiset · Double-ended queue · Hàng đợi · Hàng đợi ưu tiên · Ngăn xếp
Mảng
Mảng động · Sparse array · Circular buffer · Mảng bit · Bảng băm
Liên kết
Danh sách liên kết · Unrolled linked list · Danh sách liên kết XOR · Skip list
Directed graph · Directed acyclic graph · Sơ đồ quyết định nhị phân · Siêu đồ thị
Danh sách các cấu trúc dữ liệu
Các kiểu dữ liệu
Không xác định
Bit
Byte
Trit
Tryte
Word
Mảng bit
Số
Độ chính xác tùy ý hay bignum
Phức
Thập phân
Dấu phẩy tĩnh
Dấu phẩy động
Độ chính xác thấp
Minifloat
Bán chính xác
bfloat16
Độ chính xác đơn
Độ chính xác kép
Độ chính xác bậc bốn
Độ chính xác bậc tám
Độ chính xác mở rộng
Long double
Nguyên
có dấu và không dấu
Khoảng
Hữu tỉ
Con trỏ
Địa chỉ
vật lý
ảo
Tham chiếu
Văn bản
Ký tự
Chuỗi
kết thúc rỗng
Phức hợp
Kiểu dữ liệu đại số
tổng quát
Mảng
Mảng kết hợp
Lớp
Phụ thuộc
Equality
Quy nạp
Giao
Danh sách
Đối tượng
siêu đối tượng
Kiểu tùy chọn
Tích
Bản ghi hay Struct
Refinement
Tập hợp
Hợp
tagged
Khác
Boole
Kiểu đáy
Collection
Kiểu liệt kê
Ngoại lệ
Kiểu hàm
Kiểu dữ liệu mờ
Kiểu dữ liệu đệ quy
Đèn báo
Stream
Kiểu đỉnh
Lớp kiểu
Kiểu đơn vị
Void
Chủ đề liên quan
Kiểu dữ liệu trừu tượng
Cấu trúc dữ liệu
Tổng quát
Kind
siêu lớp
Kiểu đối tượng
Đa hình tham số
Kiểu dữ liệu cơ bản
Giao thức
giao diện
Đa hình dẫn xuất
Hàm tạo kiểu
Chuyển đổi kiểu
Hệ thống kiểu
Lý thuyết hình thái
Biến
Những lĩnh vực chính của khoa học máy tính
Các nền tảng toán học
Logic toán · Lý thuyết tập hợp · Lý thuyết số · Lý thuyết đồ thị · Lý thuyết kiểu · Lý thuyết thể loại · Giải tích số · Lý thuyết thông tin · Đại số · Nhận dạng mẫu · Nhận dạng tiếng nói · Toán học tổ hợp · Đại số Boole · Toán rời rạc
Lý thuyết phép tính
Độ phức tạp Kolmogorov · Lý thuyết Automat · Lý thuyết tính được · Lý thuyết độ phức tạp tính toán · Lý thuyết điện toán lượng tử
Các cấu trúc dữ liệu và các giải thuật
Phân tích giải thuật · Thiết kế giải thuật · Hình học tính toán · Tối ưu hóa tổ hợp
Các ngôn ngữ lập trình và Các trình biên dịch
Các bộ phân tích cú pháp · Các trình thông dịch · Lập trình cấu trúc · Lập trình thủ tục · Lập trình hướng đối tượng · Lập trình hướng khía cạnh · Lập trình hàm · Lập trình logic · Lập trình máy tính · Lập trình mệnh lệnh · Lập trình song song · Lập trình tương tranh · Các mô hình lập trình · Prolog · Tối ưu hóa trình biên dịch
Tính song hành, Song song, và các hệ thống phân tán
Đa xử lý · Điện toán lưới · Kiểm soát song hành · Hiệu năng hệ thống · Tính toán phân tán
Công nghệ phần mềm
Phân tích yêu cầu · Thiết kế phần mềm · Các phương pháp hình thức · Kiểm thử phần mềm · Quy trình phát triển phần mềm · Các phép đo phần mềm · Đặc tả chương trình · LISP · Mẫu thiết kế · Tối ưu hóa phần mềm
Kiến trúc hệ thống
Kiến trúc máy tính · Tổ chức máy tính · Các hệ điều hành · Các cấu trúc điều khiển · Cấu trúc bộ nhớ lưu trữ · Vi mạch · Thiết kế ASIC · Vi lập trình · Vào/ra dữ liệu · VLSI design · Xử lý tín hiệu số
Viễn thông và Mạng máy tính
Audio máy tính · Chọn tuyến · Cấu trúc liên kết mạng · Mật mã học
Các cơ sở dữ liệu và Các hệ thống thông tin
Hệ quản trị cơ sở dữ liệu · Cơ sở dữ liệu quan hệ · SQL · Các giao dịch · Các chỉ số cơ sở dữ liệu · Khai phá dữ liệu · Biểu diễn và giao diện thông tin · Các hệ thống thông tin · Khôi phục dữ liệu · Lưu trữ thông tin · Lý thuyết thông tin · Mã hóa dữ liệu · Nén dữ liệu · Thu thập thông tin
Trí tuệ nhân tạo
Lập luận tự động · Ngôn ngữ học tính toán · Thị giác máy tính · Tính toán tiến hóa · Các hệ chuyên gia · Học máy · Xử lý ngôn ngữ tự nhiên · Robot học
Đồ họa máy tính
Trực quan hóa · Hoạt họa máy tính · Xử lý ảnh
Giao diện người-máy tính
Khả năng truy cập máy tính · Giao diện người dùng · Điện toán mang được · Điện toán khắp mọi nơi · Thực tế ảo
Khoa học tính toán
Cuộc sống nhân tạo · Tin sinh học · Khoa học nhận thức · Hóa học tính toán · Khoa học thần kinh tính toán · Vật Lý học tính toán · Các giải thuật số · Toán học kí hiệu
Chú ý: khoa học máy tính còn có thể được chia thành nhiều chủ đề hay nhiều lĩnh vực khác dựa theo Hệ thống xếp loại điện toán ACM.
Theovi.wikipedia.org
Copy link
5
Nội dung từ Mytour nhằm chăm sóc khách hàng và khuyến khích du lịch, chúng tôi không chịu trách nhiệm và không áp dụng cho mục đích khác.
Nếu bài viết sai sót hoặc không phù hợp, vui lòng liên hệ qua Zalo: 0978812412 hoặc Email: [email protected]
Trang thông tin điện tử nội bộ
Công ty cổ phần du lịch Việt Nam VNTravelĐịa chỉ: Tầng 20, Tòa A, HUD Tower, 37 Lê Văn Lương, Quận Thanh Xuân, Thành phố Hà NộiChịu trách nhiệm quản lý nội dung: Zalo: 0978812412 - Email: [email protected]