Hi

I am having problems comiling the following code

List Header file

// list.h - Linked List ADT

Code:
#ifndef _LIST_H_
#define _LIST_H_
struct List;
typedef struct ListNode *Position;
List *ListConstruct();  // NULL if fails
void ListDestroy(List *l);
bool ListEmpty(const List *l);
Position ListHead(const List *l);
Position ListFirst(const List *l);
Position ListNext(const List *l, Position p);
Position ListLast(const List *l);
Position ListAdvance(const List *l, Position p);
Position ListPrevious(const List *l, Position p);
void *ListRetrieve(const List *l, Position p);
bool ListInsert(List *l, Position p, void *item);
void ListDelete(List *l, Position p);
typedef void ListCallback(const void *);
void ListTraverse(const List *l, ListCallback *fn, bool fwd);
#endif
Program to insert info into list

Code:
#include <stdlib.h>
#include <stdio.h>
#include "list.h"

//the callback function
void printname(void *ptr) {
	printf("%s\n", (char *)ptr);
}

int main() {
		List *l;
		Position p;

		if  ((l = ListConstruct()) == NULL) {
		exit(EXIT_FAILURE);     //unable to create list
	}
	p = ListHead(l); // start at front of enpty list
	
	//insert an item at the front
	if (!ListInsert(l,p, "Freddy")) {
		exit(EXIT_FAILURE);
	}
	//insert another item after that - move position first

	p = ListNext(l,p);
	if (!ListInsert(l, p, "Billy")) {
		exit(EXIT_FAILURE);
	}

	//now insert a third one before the last
	if (!ListInsert(l, p, "Johnny")) {
		exit(EXIT_FAILURE);
	}

	//Finally the last one at the end
	p=ListLast(l);
	if (!ListInsert(l, p, "Mickey")) {
		exit(EXIT_FAILURE);
	}

	// Now print out the list in the forward direction

	ListTraverse(l, printname, true);

	//destroy the list before finishing
	ListDestroy(l);
	return 0;
}
I am getting the following compile errors

namelists.c: In function `int main()':
namelists.c:20: invalid conversion from `const void*' to `void*'
namelists.c:26: invalid conversion from `const void*' to `void*'
namelists.c:31: invalid conversion from `const void*' to `void*'
namelists.c:37: invalid conversion from `const void*' to `void*'
namelists.c:43: invalid conversion from `void (*)(void*)' to `void (*)(const void*)'

I am assuming the reason for this is something to do with pointers, but I am at a bit of loss as to what to do as we haven't been provided with many examples.

Could someone explain why I am getting this error

Thanks

PT