I would like to see more comments in the encode function and strings functions to help explain what is going on. The spacing in some of the functions like binary_search_recursive and encode is good though.
It seems that your string search functions share a lot of the same code. I recommend refactoring it so that two of the string functions call the third one.
Don't forget to annotate your string functions and linked list functions as they are good practice.