you can start by deleting line 516 because it is nothing more than a huge memory leak.
When walking backwards you can't check for pCurrent == NULL because what you want to check for is while pCurrent != the head of the linked list, and the head is never NULL unless its an empty list. I assume pWalker is the point at which you want to start walking backwards, but what is the head of the linked list? If it isn't a gobal variable then you will have to pass it to the display function.