Apakah ada pustaka C open source dengan struktur data umum? [Tutup]


111

Saya mencari pustaka C dengan struktur data umum yang dapat digunakan kembali seperti daftar tertaut, tabel hash, dll. Sesuatu seperti sumber yang didistribusikan dengan Menguasai Algoritma dengan C (Paperback) oleh Kyle Loudon .


Situs lain lebih cocok untuk jenis pertanyaan ini slant.co/improve/topics/19233
ideasman42

Jawaban:


57

BSD queue.h memiliki:

  • SLIST = daftar tertaut tunggal
  • LIST = daftar tertaut ganda
  • SIMPLEQ = antrian tertaut tunggal
  • TAILQ = antrian tertaut ganda

BSD tree.h memiliki:

  • RB - pohon merah-hitam
  • SPLAY - pohon hamparan

Lihat halaman manual antrian (3) dan pohon (3) untuk detailnya. Saya sangat menyukainya karena mereka adalah makro C murni tanpa dependensi (bahkan libc). Ditambah dengan lisensi BSD Anda tidak perlu khawatir tentang batasan perusahaan dengan GPL.


36

Gnome menyediakan perpustakaan yang sangat baik untuk ini, yang disebut Glib , dengan banyak struktur data yang berguna dan juga utilitas lainnya.


30

gnulib , pustaka portabilitas gnu.

Ini didistribusikan sebagai kode sumber. Daftar ini berasal dari daftar modulnya , yang mencakup BANYAK hal lain. Salah satu yang menarik adalah "c-stack: Stack overflow handling, menyebabkan keluarnya program."

  • daftar
  • daftar larik
  • daftar carray
  • daftar tertaut
  • avltree-list
  • rbtree-list
  • linkedhash-list
  • avltreehash-list
  • rbtreehash-list
  • sublist (Tipe data daftar berurutan yang didukung oleh daftar lain.)
  • oset (Kumpulan terurut abstrak.)
  • array-oset
  • avltree-oset
  • rbtree-oset.dll

Ingatlah bahwa opsi ini berlisensi GPL, dan oleh karena itu hanya dapat digunakan secara legal di perangkat lunak berlisensi GPL.
Noah Andrews

19

SGLIB adalah pustaka struktur data generik yang sangat baik. Pustaka saat ini menyediakan implementasi umum untuk:
pengurutan array,
daftar
tertaut, daftar
tertaut, daftar tertaut ganda,
pohon merah-hitam,
wadah hash

Ini sangat cepat, lebih cepat dari fasih. Ini terinspirasi oleh Perpustakaan Template Standar. Unduh disini

Solusi lain adalah perangkat lunak Attractive Chaos . C macro library:
kbtree.h : library B-tree yang efisien di C.
khash.h: library tabel hash yang cepat dan ringan di C.
kvec.h: container vektor sederhana di C.

Sglib dan perangkat lunak Attractive Chaos adalah pustaka makro C. Menggunakan void * untuk mengimplementasikan container generik di C mungkin tidak efisien. Makro C meniru template C ++ dan seefisien template C ++


Petunjuk bagus - Saya belum pernah mendengar tentang SGLIB sebelumnya.
Michael Burr

Tautan "unduh" untuk proyek SGLIB rusak. Sepertinya akan mati ...: /
luis.espinal

@ luis.espinal Ini masih dapat diunduh dari freecode.com/projects/sglib
Rob

Sepertinya kedua lib ini telah AWOL.
Michael Foukarakis




Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.