这是一个旨在在基本链表的末尾插入新节点的功能。
node *insert(node *head, int data)
{
if (head == NULL)
return createNode(data);
head->next = insert(head->next, data);
return head;
}
如何修改它以使其没有返回值,而是将指针传递给头部 指针?是否可以像上面那样递归地写出来?
这是函数签名:
void insert(node **head, int data)
答案 0 :(得分:1)
像这样:
void insert(node **head, int data)
{
if (*head == NULL)
*head = createNode(data);
insert(&(*head)->next, data);
}
答案 1 :(得分:-1)
非递归版:
void insert(node **head, int data)
{
node *p;
if (*head == NULL) {
*head = createNode(data);
return;
}
for (p = *head; p->next != NULL; p = p->next)
;
p->next = createNode(data);
}
Jim Balter的建议:
void insert(node **head, int data)
{
for (; *head != NULL; head = &(*head)->next)
;
*head = createNode(data);
}