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.