Ortak veri yapılarına sahip herhangi bir açık kaynak C kitaplığı var mı? [kapalı]


111

Bağlantılı listeler, karma tablolar vb. Gibi sık kullanılan yeniden kullanılabilir veri yapılarına sahip bir C kitaplığı arıyorum . Kyle Loudon'un C ile Algoritma Mastering (Paperback) ile dağıtılan kaynak gibi bir şey .


Diğer siteler bu tür sorulara daha uygun slant.co/improve/topics/19233
ideasman42

Yanıtlar:


57

BSD queue.h şu özelliklere sahiptir:

  • SLIST = tek bağlantılı liste
  • LIST = çift bağlantılı liste
  • SIMPLEQ = tek bağlantılı kuyruk
  • TAILQ = çift bağlantılı kuyruk

BSD tree.h şu özelliklere sahiptir:

  • RB - kırmızı-siyah ağaç
  • SPLAY - yaylı ağaç

Ayrıntılar için kuyruk (3) ve ağaç (3) kılavuz sayfalarına bakın. Onları gerçekten seviyorum çünkü bağımlılıkları olmayan saf C makroları (libc bile değil). Artı BSD lisansı ile GPL ile herhangi bir şirket kısıtlaması konusunda endişelenmenize gerek yok.


36

Gnome, bunun için Glib adı verilen , birçok yararlı veri yapısı ve diğer yardımcı programlarla birlikte mükemmel bir kitaplık sağlar .


30

gnulib , gnu taşınabilirlik kitaplığı.

Kaynak kodu olarak dağıtılır. Bu liste, diğer şeylerin TON'unu içeren modül listesinden . İlginç olanı "c-yığın: Yığın taşma işlemidir, program çıkışına neden olur."

  • liste
  • Dizi listesi
  • CArray listem
  • bağlantılı liste
  • avltree listem
  • rbtree listem
  • linkedhash listem
  • avltreehash listem
  • rbtreehash listem
  • alt liste (başka bir liste tarafından desteklenen sıralı liste veri türü.)
  • oset (Özet sıralı küme.)
  • Dizi = OSEt
  • avltree-oset
  • rbtree-oset

Bu seçeneğin GPL lisanslı olduğunu ve bu nedenle yalnızca GPL lisanslı yazılımda yasal olarak kullanılabileceğini unutmayın.
Nuh Andrews

19

SGLIB , mükemmel bir genel veri yapıları kitaplığıdır. Kitaplık şu anda aşağıdakiler için genel uygulamalar sağlar: bağlantılı
dizileri sıralamak
,
sıralı bağlantılı listeleri
çift ​​bağlantılı listeler
kırmızı-siyah ağaçlar
karma kaplar

Çok hızlı, glib'den daha hızlı. Standart Şablon Kitaplığından esinlenmiştir. Buradan İndirin

Diğer bir çözüm ise Çekici Kaos yazılımıdır . C makro kitaplığı:
kbtree.h: C.
khash.h'de verimli B-ağaç kitaplığı: C. kvec.h'de hızlı ve hafif ağırlıklı karma tablo kitaplığı: C'de
basit vektör kapsayıcı

Sglib ve Cazip Kaos yazılımı C makroları kitaplığıdır. C'de jenerik kapsayıcılar uygulamak için void * kullanmak verimsiz olabilir. C makroları C ++ şablonunu taklit eder ve C ++ şablonu kadar etkilidir


Güzel işaretler - SGLIB'yi daha önce hiç duymamıştım.
Michael Burr

SGLIB projesinin "indirme" bağlantısı kesildi. Görünüşe göre feshediliyor ...: /
luis.espinal

@ luis.espinal Hala indirilebilir freecode.com/projects/sglib
Rob

Görünüşe göre bu iki kitap da kaçmış.
Michael Foukarakis




Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.