将节点添加到C中的链表时,EXC_BAD访问

我正在尝试实现一个功能,以在链表的末尾添加一个新节点,该链表位于此处但是,当在Xcode中运行以下代码时,如果if语句上标记了注释// ERROR,则会出现EXC_BAD_ACCESS错误

这是我第一次遇到链表,有人能解释我在做什么错吗?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct _node {
    int value;
    struct _node *next;
} node;

int addNodeBottom(int val, node *head);

int main(int argc, const char * argv[]) {
    node *head;
    head = NULL;

    for (int i = 1; i<11; i++) {
        addNodeBottom(i, head);
    }


    node *temp = head;
    while (head != NULL) {
        head = temp->next;
        free(temp);
        temp = head;
    }

    return 0;
}

int addNodeBottom(int val, node *head){

    //create new node
    node *newNode = (node*)malloc(sizeof(node));

    if(newNode == NULL){
        fprintf(stderr, "Unable to allocate memory for new node\n");
        exit(-1);
    }

    newNode->value = val;
    newNode->next = NULL;

    //check for first insertion
    if(head->next == NULL){                //ERROR
        head->next = newNode;
        printf("added at beginning\n");
    }

    else {
        //else loop through the list and find the last
        //node, insert next to it
        node *current = head;
        while (current->next != NULL) {
            current = current->next;
        }
        current->next = newNode;
        printf("added later\n");
    }
    return 0;
}
克拉夫琴科(V. Kravchenko)
head = NULL;
...
if(head->next == NULL)

因为这。您应该首先将head初始化为有效的指针。解决您的问题的可能方法是传递node** head给function而不是node* headPtrand进行检查*headPtr == NULL,以使其能够使用head = NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我得到一个分段错误尝试的节点添加到链表在C结束时(核心转储)错误++

将Google地图添加为子视图会导致exc_bad导致iOS应用崩溃

将常规JavaFX节点添加到FXML中

将链表中的值添加到变量

将头节点添加到单链表中会产生分段错误错误

将几个链表的内容添加到较大的链表中并不断更新

将节点添加到链表的末尾,并具有后方和起始指针

将元素添加到树中时如何自动扩展Webix树节点

SEGV:将节点添加到链表的末尾时,大小为8的invalig写

无法将节点追加到C中我的链表的末尾

在JavaFX中添加到HBox时如何滑动节点?

节点的地址在添加到链表中时会相互覆盖

将节点等级添加到networkx中的节点标签

在C ++的链表中添加新节点时程序崩溃

将节点添加到链表的功能不起作用 C

如何在没有头/尾指针的情况下将多个节点添加到C中的链表?

将UIViewController作为容器添加到主VC EXC_BAD_ACCESS的顶部

C:使用链表将数据添加到结构

将元素添加到已排序的链表C ++中时出现的问题

将节点添加到链表时出现分段错误

将节点添加到链表的开头会导致错误消息,我不关注

C ++:按字母顺序将节点添加到双向链表

创建递归函数以将节点添加到链表中

如何将链表添加到链表的特定节点上?

将数据添加到 Firebase 中的现有节点

符石将节点添加到有序链表 - 错误

将动态节点添加到 php 中的 xml 文件

将元素添加到链表

无法将数据添加到 Firebase 中的不同节点