Unfortunately I don't have answer to your question, but I have two suggestions
1) make a much more descriptive title - this will entice people to investigate your problem
2) Please use code tags. This makes the code that you post much more readable.
why don't you take another approach to solve this problem. I would suggest using a pointer called " start " to mark the beginning of the list and then use another pointer called "p" to enlarge the list. The pointer "p" will be changed as needed. give it a shot and i'm ready for help.
Actually u got quit of what i meant. Good, but its possible to make the code simpler. you can do it this way:
for ( int c = 1; c<=n; c++ )// making the circular list.
p->next = start;
p -> next = new node;
Note that there is no need to use ( head & start ) pointers twice, one of them is enough. Also the (n-1) way made it confusing and a little bit complicated. Always to try to make your code simple and stupid. i hate to give the answer directly with out making you to figure it out your self, but its my fault i replied late and i think its not worth waiting this long time if we gonna make it step by step.