Có thư viện C nguồn mở nào có cấu trúc dữ liệu chung không? [đóng cửa]


111

Tôi đang tìm kiếm một thư viện C với các cấu trúc dữ liệu có thể tái sử dụng phổ biến như danh sách được liên kết, bảng băm, v.v. Một thứ giống như nguồn được phân phối với Thuật toán làm chủ với C (Bìa mềm) của Kyle Loudon .


Các trang web khác phù hợp hơn với những loại câu hỏi này slant.co/improve/topics/19233
ideasman42

Câu trả lời:


57

BSD queue.h có:

  • SLIST = danh sách liên kết đơn lẻ
  • LIST = danh sách được liên kết kép
  • SIMPLEQ = hàng đợi được liên kết đơn lẻ
  • TAILQ = hàng đợi được liên kết kép

BSD tree.h có:

  • RB - cây đỏ đen
  • SPLAY - cây splay

Xem trang người xếp hàng (3)cây (3) để biết thêm chi tiết. Tôi thực sự thích chúng vì chúng là macro C thuần túy mà không có phụ thuộc (thậm chí không phải libc). Cùng với giấy phép BSD, bạn không phải lo lắng về bất kỳ hạn chế nào của công ty w / GPL.


36

Gnome cung cấp một thư viện tuyệt vời cho việc này, được gọi là Glib , với nhiều cấu trúc dữ liệu hữu ích và các tiện ích khác.


30

gnulib , thư viện di động gnu.

Nó được phân phối dưới dạng mã nguồn. Danh sách này là từ danh sách mô-đun của nó , bao gồm một TẤN những thứ khác. Một điều thú vị là "c-stack: Xử lý tràn ngăn xếp, gây thoát chương trình."

  • danh sách
  • lập danh sách
  • carray-list
  • danh sách liên kết
  • danh sách hàng đầu
  • rbtree-list
  • danh sách liên kết
  • avltreehash-list
  • rbtreehash-list
  • danh sách con (Kiểu dữ liệu danh sách tuần tự được hỗ trợ bởi một danh sách khác.)
  • oset (Tập hợp có thứ tự trừu tượng.)
  • mảng-oset
  • avltree-oset
  • rbtree-oset

Hãy nhớ rằng tùy chọn này được cấp phép GPL và do đó chỉ có thể được sử dụng hợp pháp trong phần mềm được cấp phép GPL.
Noah Andrews

19

SGLIB là một thư viện cấu trúc dữ liệu chung tuyệt vời. Thư viện hiện cung cấp các triển khai chung cho:
sắp xếp mảng
danh sách
được liên kết đã sắp xếp danh sách
liên kết kép danh sách liên kết đôi
màu đỏ-đen cây được
băm vùng chứa

Nó rất nhanh, nhanh hơn glib. Nó được lấy cảm hứng từ Thư viện Mẫu Chuẩn.Tải xuống ở đây

Một giải pháp khác là phần mềm Attractive Chaos . Thư viện macro C:
kbtree.h : thư viện B-tree hiệu quả trong C.
khash.h: thư viện bảng băm nhanh và trọng lượng nhẹ trong C.
kvec.h: vùng chứa vector đơn giản trong C.

Phần mềm Sglib và Attractive Chaos là thư viện C macro. Sử dụng void * để triển khai các vùng chứa chung trong C có thể không hiệu quả. Macro C bắt chước mẫu C ++ và hiệu quả như mẫu C ++


Bạn chưa bao giờ nghe nói về SGLIB trước đây.
Michael Burr

Liên kết "tải xuống" cho dự án SGLIB bị hỏng. Có vẻ như sẽ không còn tồn tại ...: /
luis.espinal

@ luis.espinal Nó vẫn có thể được tải xuống từ freecode.com/projects/sglib
Rob

Có vẻ như cả hai lib này đều đã AWOL.
Michael Foukarakis




Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.