연결된 목록, 해시 테이블 등과 같은 일반적인 재사용 가능한 데이터 구조를 가진 C 라이브러리를 찾고 있습니다. Kyle Loudon의 Mastering Algorithms with C (Paperback)와 함께 배포 된 소스와 같은 것 입니다.
답변
BSD queue.h 에는 다음이 있습니다.
- SLIST = 단일 연결 목록
- LIST = 이중 연결 목록
- SIMPLEQ = 단일 연결 대기열
- TAILQ = 이중 연결 대기열
BSD tree.h 에는 다음이 있습니다.
- RB-빨강-검정 나무
- SPLAY-스플레이 트리
자세한 내용은 queue (3) 및 tree (3) 매뉴얼 페이지를 참조하십시오. 나는 그것들이 종속성이없는 순수한 C 매크로이기 때문에 정말 좋아합니다 (libc도 아님). 또한 BSD 라이선스를 사용하면 GPL에 대한 회사 제한에 대해 걱정할 필요가 없습니다.
답변
Gnome은 유용한 데이터 구조 및 기타 유틸리티가 많은 Glib 라는 우수한 라이브러리를 제공합니다 .
답변
gnu 이식성 라이브러리 인 gnulib
소스 코드로 배포됩니다. 이 목록은 다른 것들의 TON을 포함하는 모듈 목록 에서 가져온 것입니다. 한 가지 흥미로운 점은 “c-stack : 스택 오버플로 처리로 인해 프로그램 종료”입니다.
- 명부
- 배열 목록
- carray-list
- 연결 목록
- avltree-list
- rbtree 목록
- 연결된 해시 목록
- avltreehash 목록
- rbtreehash 목록
- sublist (다른 목록에서 지원하는 순차 목록 데이터 유형입니다.)
- oset (추상 순서 세트)
- 어레이-오셋
- Avltree-oset
- rbtree-oset
답변
SGLIB 는 우수한 일반 데이터 구조 라이브러리입니다. 라이브러리는 현재 다음과 같은 일반적인 구현을 제공합니다.
배열 정렬
연결 목록
정렬 연결 목록
이중 연결 목록
빨간색-검정 트리
해시 컨테이너
glib보다 빠르고 빠릅니다. 표준 템플릿 라이브러리에서 영감을 얻었습니다. 여기에서 다운로드
또 다른 해결책은 매력적인 카오스 소프트웨어 입니다. C 매크로 라이브러리 :
kbtree.h : C의 효율적인 B- 트리 라이브러리.
khash.h : C의 빠르고 가벼운 해시 테이블 라이브러리.
kvec.h : C의 간단한 벡터 컨테이너.
Sglib 및 매력적인 카오스 소프트웨어는 C 매크로 라이브러리입니다. C에서 제네릭 컨테이너를 구현하기 위해 void *를 사용하는 것은 비효율적 일 수 있습니다. C 매크로는 C ++ 템플릿을 모방하고 C ++ 템플릿만큼 효율적입니다.