swopping the pointers is the same as moving the value. The finished nodes will be identical either way.Imagine your linked list is a large line of identical buckets and they are roped together with knotted rope(pointers). Is it easier to swop whats in the buckets or untie and move each one? Whats the end result either way?

I did try that algorithem many times. Something's amiss still. Must be something else in my code.

What happens is that if I swap first and last nodes in the list, the first node is correct, but the last node is not swapped with the first node.

interesting to say the least. I'm using the example you gave me though. I'll hand it in like that. I'll likely get the back of my hand slapped because I suck at C. But that's better than ...well, I guess I can't think of anything better than that at this point. HAHA

Hey Stoned,
Also, I tested the algorithm in my driver. In the case where the the two nodes swapped are not end nodes, it essentially removed the nodes between P2 and P1.

where 3 = P2, 7=P1
1 2 3 4 5 6 7 8 9

resulted in something like
1 2 3 8 9

I guess the nodes that are swapped are somewhere else in memory lost forever. but I assume that they're
7 5 6 4

Interesting... I think it's going to take 8 steps to perform the swap. So it seems that two pointer assignments are missing.
I'm looking at it on the whiteboard now...but I get confused, even after a good nights sleep. Must be all the skunky rope I smoked as a kid.