Simple, memory-safe data-structures in C.
C Makefile
Latest commit 75ead89 Aug 13, 2015 @zhemao Merge pull request #8 from lundmar/master
Fixed list_first() and list_last(), added list_empty()
Failed to load latest commit information.
.gitignore added corrected ds.h Aug 10, 2011
LICENSE Added README, strutils documentation, and MIT License Jul 16, 2011
Makefile get rid of tree Jan 21, 2014 editing for formatting Jan 22, 2014
ds.h get rid of tree Jan 21, 2014
hashmap.c bugfix for issue #1 Aug 31, 2012
hashmap.h turn down default hashmap size and add resize method Mar 15, 2012
heap.c do renaming in heap Jan 3, 2012
heap.h rename header guards to avoid potential conflicts Jan 8, 2012
heaptest.c more prints in heaptest Aug 6, 2012
list.c Added list_empty() for convenience Jul 22, 2015
list.h Added list_empty() for convenience Jul 22, 2015
maptest.c make sure size_t is cast to int before printing Aug 6, 2012
strutils.c make buffer_nconcat place null character at end Sep 17, 2011
strutiltest.c clean up strtutiltest Aug 6, 2012
vectest.c do some renaming in vector to avoid conflicts Jan 2, 2012
vector.h rename header guards to avoid potential conflicts Jan 8, 2012

libds - Data Structures in C

This is a collection of C implementations of common data structures. I implemented these as an exercise when I was first learning C. I have no interest in maintaining this library. Use this code at your own peril.

The library includes implementations of the following data structures.

  • Hashmap
  • Vector (auto-expanding array)
  • Linked List
  • String Buffer (auto-expanding, length-recording string)

Installation Instructions:

Running make with no arguments will generate a shared library named libds.a. You can then copy that library, as well as all header files, into your project directory. If you do not wish to use separate header files, you may generate a single header file called ds.h by running make ds.h.

You can link your applications to the static library like so.

gcc -static main.c -L. -lds -o main

Assuming that main.c is your program and libds.a has been copied into the same directory.

Documentation on how to use the various functions and datastructures can be found in the header files.


libds is distributed under the MIT License, the full text of which is reproduced in LICENSE.