我遇到过很多链接列表函数和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/

10-08 22:01