Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Simple, memory-safe data-structures in C.
C Makefile
Branch: master

Merge pull request #8 from lundmar/master

Fixed list_first() and list_last(), added list_empty()
latest commit 75ead89b60
@zhemao authored
Failed to load latest commit information.
.gitignore added corrected ds.h
LICENSE Added README, strutils documentation, and MIT License
Makefile get rid of tree editing for formatting
ds.h get rid of tree
hashmap.c bugfix for issue #1
hashmap.h turn down default hashmap size and add resize method
heap.c do renaming in heap
heap.h rename header guards to avoid potential conflicts
heaptest.c more prints in heaptest
list.c Added list_empty() for convenience
list.h Added list_empty() for convenience
listtest.c make sure removing from list of size 1 doesn't segfault
maptest.c make sure size_t is cast to int before printing
strutils.c make buffer_nconcat place null character at end
strutils.h rename header guards to avoid potential conflicts
strutiltest.c clean up strtutiltest
vector.c make sure vector_insert updates sizes correctly
vector.h rename header guards to avoid potential conflicts

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.

Something went wrong with that request. Please try again.