最佳答案
下面的两个代码示例都在链表的顶部添加了一个节点。 但是,第一个代码示例使用双指针,而第二个代码示例使用单指针
代码示例1:
struct node* push(struct node **head, int data)
{
struct node* newnode = malloc(sizeof(struct node));
newnode->data = data;
newnode->next = *head;
return newnode;
}
push(&head,1);
代码示例2:
struct node* push(struct node *head, int data)
{
struct node* newnode = malloc(sizeof(struct node));
newnode->data = data;
newnode->next = head;
return newnode;
}
push(head,1)
这两种策略都有效。但是,许多使用链表的程序使用双指针来添加新节点。我知道双指是什么。但是,如果单个指针就足以添加一个新节点,那么为什么许多实现都依赖于双指针呢?
有没有一个单指针不工作的情况,所以我们需要去双指针?