Kage List

This is a linked list implementation in C for C programs. It is double linked, meaning that both forward and reverse pointers between nodes are kept.

There are still test cases which need to be written, so be wary of bugs. It would be wise to examine and test the code thoroughly yourself before using this library in any significant system.


Well, the same as any other linked list implementation ;D. More seriously, a linked list is useful for storing data efficiently when insertion and deletion are common operations, but random access and modification are relatively rare. Sequential access is nearly as fast as an array.

Take care to empirically evaluate performance, though. Although linked lists do well in theory on the above operations, they are sometimes less impressive in practice. This is mainly due to I/O performance, which is typically better on contiguous data.


Check the include header kage_list.h for a summary of the interface. The functions listed there are implemented and described in linked_double.c. Unfortunately, this is the only documentation at this time.


This code is currently released under these licenses:

Choose one and only one for your usage.

I am considering an additional license, most probably either BSD or LGPL, but have not yet made a decision on that.


The most recent public version is 0.5.0, released on April 11th, 2012. Provided here is a bzip2 compressed tarball of the code.