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 .

Vasil
sumber
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.

HUAGHAGUAH
sumber
36

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

Emil H.
sumber
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
Ian Kelling
sumber
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 ++

Lear
sumber
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
3

Waktu Proses Portabel Apache.

Jaap
sumber
3
Ditemukan di sini: apr.apache.org
n8gray