It's "Destruct" not "Deconstruct"! Haven't you ever seen "Mission Impossible"...

Why the excessive bracketing: ((target->Forward)->Backward)=(target->Backward);
None of those brackets are required. You certainly don't need to bracket lvalues!

In the last code sample you posted, nothing is initialised at all! I can't spot the problem because it's a case of can't see the forest for the trees. (too many bugs to find the bug)
For that matter, nothing is reset after deletion either, which is just as important.

Where in the list is CreateNode supposed to be sticking the new node? At the end I presume? It is unclear though. If we know what it is supposed to be doing then it will be easier to see if it is correct. Picking better function names or adding comments would make it clearer.

NodeRecent serves no useful purpose - should get rid of it.

(void) is not required in the function parameter list in C++.

Looks like a lot more code in general than there should be for this. E.g. Why two if's in CreateNode? What if one is true and the next is false! Goes back to the uninitialised variables perhaps...