询问一道关于指针的题
写出程序把一个链表中的接点顺序倒排
typedef struct linknode
{
int data;
struct linknode *next;
} node;
//将一个链表逆置
node *reverse(node *head)
{
node *p,*q,*r;
p=head;
q=p->next;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=NULL;
head=p;
return head;
}
这是网上见到的一种将单项链表转向的做法,但是个人感觉这种方法有点问题,问题就出现在最后两句中
head=p;
return head;
因为 head 是形参,c 关于形参传递时,是值传递,所以对于head 修改只是对于其拷贝进行修改,无法对其原值进行修改,所以在返回后,head 就是原值并没有修改,修改方法是不是将形参改为指针的指针更好,例如
node *reverse(node **head);
这种方式应该就会好把, 本人不敢确定,希望高手能指点一二,谢谢,本人菜鸟。