求问上,这个链表倒置的代码是不是写错了

求问下,这个链表倒置的代码是不是写错了?
C/C++ code

void Reverse(node *&head)
{
    node *newhead=NULL;
    node *p;
    while (head!=NULL)
    {
        p=head;
        head=head->next;
        p->next=newhead; //这句写错了吧?newhead咋在右边呢?
        newhead=p;
    }
    head=newhead;
}


先谢谢大神们了~~

------解决方案--------------------
探讨
按照temp=a a=b b=temp来看

void Reverse(node *&head)
{
node *newhead=NULL;
node *p;
while (head!=NULL)
{
p=head;
head=head->next;
newhead=p;
p->next=newhead; //虽然也没错 但是倒过来比较……