在c中链表的末尾节点插入一个元素



我想在链接列表的末尾添加一个节点。所以我做了一个相同的方法,它给出了预期的结果。但是我不确定这个节目是否正确。请查看程序是否正确。

node *insert_end_node(node *nd, int value) {
  node *tmp, *p;
  tmp = (node *)malloc(sizeof(node *));
  tmp->data = value;
  tmp->next = NULL;
  p = nd;
  while (p->next != NULL) {
    p = p->next;
  }
  p->next = tmp;
  // nd =tmp;
  return nd;
}

Thanks in advance

两件事:

  1. 当你接受一个指针作为参数时,你应该总是检查它是否为NULL。在您的情况下,如果是nd == NULL,那么您将尝试访问NULL->next,您的程序可能会崩溃。
  2. 当你调用tmp = (node *)malloc(sizeof(node*))时,你想为节点分配足够的内存,而不是为节点指针。正确的代码是tmp = (node *)malloc(sizeof(node))。一个更好的选择是写tmp = (node *)malloc(sizeof(*tmp)),因为如果你决定改变tmp的类型,分配仍然会工作。

相关内容

  • 没有找到相关文章

最新更新