struct node * reverse( struct node * p)
{
struct node * temp = NULL;
if ( p == NULL)
return NULL;
if ( p->next == NULL )
return p;
temp = reverse ( p->next );
p->next -> next = p;
p->next = NULL;
return temp;
}
2: middle of a linked list.
Node *FindMiddle( Node *head )
{
Node *p1, *p2;
p1 = p2 = head;
while( p2 && p2->next )
{
p2 = p2->next->next;
p1 = p1->next;
}
return( p1 );
}