0

这是一个旨在在基本链表末尾插入新节点的函数。

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)
4

2 回答 2

1

像这样:

void insert(node **head, int data)
{
   if (*head == NULL)
      *head = createNode(data);

   insert(&(*head)->next, data);
}
于 2013-06-27T21:26:39.983 回答
0

非递归版本:

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);
}

吉姆巴尔特的建议:

void insert(node **head, int data)
{
    for (; *head != NULL; head = &(*head)->next)
        ;
    *head = createNode(data);
}
于 2013-06-27T21:27:54.353 回答