【问题标题】:accessing nodes of linked list using double pointers使用双指针访问链表的节点
【发布时间】:2013-09-02 10:02:59
【问题描述】:

我试图在链表中添加节点,传递指针的指针,访问成员 (*list) -> next 给出了分段错误。谁能指出错误,提前谢谢。代码是

void initializeList (node ** head, int data)
{
    *head = malloc (sizeof (node));
    (*head)-> member = data;
    (*head)-> next = NULL;
}

void addNode(node ** list, int data)
{
    node * newNode = NULL;
    newNode = malloc (sizeof (node));
    while (*list->next!= NULL) 
    {
        *list= (*list) -> next;
    }
    newNode -> member = data;
    newNode -> next = NULL;
    (*list) -> next = newNode;
}

void main ()
{
    node * head = NULL;
    initializeList (&head, 5);
    addNode(&head, 6);
}

【问题讨论】:

  • 嗯...我怀疑在 while 循环之后 *list 等于 NULL 并且当您尝试在 (*list) -> next = newNode; 构造中取消引用它时会出现错误。

标签: c linked-list


【解决方案1】:

你不应该取消引用一个 NULL 指针,否则你会得到 Seg Fault。

问题来了:

while (*list != NULL)
    {
    *list= (*list) -> next;
    }
newNode -> member = data;
newNode -> next = NULL;
(*list) -> next = newNode;

*list 在 while 循环后为 NULL。
而你正在做(*list) -> next = newNode;

【讨论】:

    【解决方案2】:

    newNode 在循环后指向 NULL 您不能设置其成员和下一个值 采用 while(*list->next!= NULL)

    确保您不会取消引用 NULL

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      相关资源
      最近更新 更多