询问一道关于指针的题

jackcost jackcost 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
写出程序把一个链表中的接点顺序倒排
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);
这种方式应该就会好把, 本人不敢确定,希望高手能指点一二,谢谢,本人菜鸟。
...全文
评论 5
收藏 已收藏
分享
返回顶部
jackcost
C语言 70,039 成员 243,237 内容