We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you two Citrix podcasts. Learn about 2020 trends and get answers to your biggest Citrix questions!Listen Now

x

on
Medium Priority
255 Views
here is a problem given to me by one of my friends.i have racked my brains but am unable to solve it.
Given a pointer to the head of a singly linked list, reverse the order of the list and return a pointer to the new head?
please provide me the solution ASAP i am very inquisitive
Comment
Watch Question

## View Solution Only

Commented:
Here is a little program that does the thing
It use C++ syntax but should work on a C compiler without big change.

#include <stdio.h>

struct list {
int one;
list *next;
};

void print(list *l)
{
list *ll=l;
while (ll!=NULL)
{
printf("%i ",ll->one);
ll=ll->next;
}
printf("\n");
}

main()
{
list *l=NULL;
list *ll, *lll;;
int x;
scanf("%i ",&x);
while (x!=0)
{
ll=l;
l=new list;
l->one=x;
l->next=ll;
scanf("%i",&x);
}
print(l);

//Here is the stuff
ll=NULL;
if (l!=NULL) lll=l->next;
while (l!=NULL)
{
l->next=ll;
ll=l;
l=lll;
if (lll!=NULL) lll=l->next;
}
l=ll;
//End of the stuff

print(l);
}

The whole thing stand on the use of 3 pointers :
the main pointer that follow the list
a pointer to the previous element
a pointer to the next element;

Given that, the problem is very simple.

Not the solution you were looking for? Getting a personalized solution is easy.

Commented:
To latha : My code could in fact be more clear with some comment.

To sanjiv : Very funny.
You have missed the case of a empty list.
And also something worst : out of your code :
while (pCurrentNode != NULL)
{
...//The content doesn't matter
}
return pCurrentNode ;
}
I THINK pCurrentNode COULD BE EQUAL to NULL WHEN RETURNED.

In my code, change :
l   to pCurrentNode
ll  to pPrevNode
lll to pNextNode
My code has been compiled and tested.

Commented:
Dear aleroy,

I completely agree with u about the problems u have pointed out.  I did not compile and test the program,  I don't have time to do that.  My intention was to give a quick start to latha and not to spoon-feed the solution.  I hope latha knows enough C programming to fix such problems.

##### Thanks for using Experts Exchange.

• View three pieces of content (articles, solutions, posts, and videos)
• Ask the experts questions (counted toward content limit)
• Customize your dashboard and profile