c - 将新节点添加到c中的现有链表

标签 c linked-list

当我尝试向我的链表中添加一个新节点时,编译器停止工作并且无法添加该节点,我无法找出问题是在逻辑中还是在语法中

struct Record* CreateNode() {
    struct Record* PointerToRecord ;
    PointerToRecord = (struct Record*) malloc(sizeof(struct Record*));
    if (PointerToRecord) {
        PointerToRecord->C = FillDataOfContacts();
        PointerToRecord->Next = NULL;
        PointerToRecord->Prev = NULL;
    }
    return PointerToRecord  ;
}

struct Record* AddNode() {
    if (Head == NULL && Tile == NULL) {
        Head = Tile = CreateNode();
    } else {
        struct Record* Pointer ;
        Pointer = CreateNode();
        Tile->Next = Pointer ;
        Pointer->Prev = Tile ;
        Pointer->Next = NULL;
        Tile = Pointer ;
    }
}

最佳答案

在您的 struct Record* CreateNode() 函数中,您有:

PointerToRecord = (struct Record*) malloc(sizeof(struct Record*));

在这里,您没有分配足够的内存来存储 struct record,而是分配内存来存储 struct record*

尝试这样分配:

PointerToRecord = (struct Record*) malloc(sizeof(struct Record));

此外,您不需要转换 malloc 的返回值: Here's why (点击)

所以你可以用下面的方式分配你的指针

PointerToRecord = malloc(sizeof(struct Record));

关于c - 将新节点添加到c中的现有链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40683002/

相关文章:

c - 合并两个排序的链表

c - GtkProgressBar 脉冲在 Ubuntu 18.04 中损坏?

Java:如何遍历类型链接列表的数组并将它们附加到数组

c - 防止链表中的 char * 改变

java - ArrayList、LinkedList 和 Vector 哪一个最适合从列表中添加或删除元素

c - 错误: conflicting types for ‘fmin’

c - 写入分配的字符缓冲区

c - C 中 z^2 = x^2 + y^2 的解决方案。代码适用于小数字,但适用于较大数字的段错误

c++ - 嵌套节点类运算符重载 < c++

c++ - 将节点添加到链表的前面,然后计算链表中的节点数