a list implementation in c