Just one point to note. In your code you were including the "node" header file twice; once in the "list" header file and then again directly in the "list" source file. It's difficult to say what effect this would have without seeing the header, but it is very bad practice. It is normal to put the contents of the header within a block like
to ensure that the file is only included once.