我遇到过很多链接列表函数和C函数,它们打算将双指针代替单指针传递给函数,例如,下面的此函数用于在链表中进行有序插入:
void sortedinsert(struct node **headref,struct node *newnode)
{
while(*headref!=NULL&&(*headref)->data<newnode->data)
headref=&((*headref)->next);
newnode->next=headref;
*headref=newnode;
}
请向我解释一下如何使用双指针代替单指针作为函数参数,它如何像上面那样为链接列表编写函数更容易?
最佳答案
请注意,如果您使用的是C ++,则可以通过引用传递headref
,因此相同的代码会更简单。它做的完全一样,但是更简单:
void sortedinsert(struct node* &headref,struct node *newnode)
{
while(headref!=NULL && headref->data < newnode->data)
headref = headref->next;
newnode->next = headref;
headref = newnode;
}
关于c - 双指针作为函数参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14342414/