c - 在C中的链表内添加元素到链表

标签 c struct linked-list

我正在尝试为主列表中的每个元素创建一个小列表。我的主列表工作正常,但我不知道如何访问小列表并将元素添加到小列表中。

struct smallList
{
    char data;
    struct smallList *next;
};

struct bigList
{
    char data;
    struct bigList *next;
    struct smallList *head;
} *root;

当我向主列表添加内容时,我为每个新节点声明:

newNode->head = NULL;

我使用此函数来获取指向主列表中元素的当前指针:

struct bigList *pointer = getPointer(root, value);

然后,将内容添加到其 smallList| 中使用该指针。我将pointer->head`传递给这个函数。而且它不起作用。

insert(pointer->head, value)

最佳答案

正如 WhozCraig 所建议的,您可以使用指向指针的指针来解决问题。像这样的事情:

void insert(struct smallList **head, char value)
{
    *head = newSmallList(value, *head);
}

newSmallList 类似于:

struct smallList *newSmallList(char value, struct smallList *rest)
{
    struct smallList *result = malloc(sizeof(struct smallList));
    result->next = rest;
    result->data = value;
    return result;
 }

当前设置的问题在于,您将指针->头字段(恰好为空)的传递给函数,而您想要改变的是存储在字段中。这是一个使用整数的程序,它说明了类似的错误:

void setFive(int i)
{
    i = 5;
}

int main(void)
{
    int myInt = 7;
    setFive(myInt);
    printf("%d\n", myInt); /* still 7! */
    return 0;
}

关于c - 在C中的链表内添加元素到链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15149568/

相关文章:

c - C中二叉搜索树的删除

c - 错误 : array type 'va_list' (aka '__builtin_va_list' ) is not assignable

检查缓冲区中的子字符串

c - 为什么在 C 中声明函数名和函数 block 之间的变量编译为有效?

c - 使用数组作为 c 中结构体的元素来初始化结构体数组

c - 函数调用的宏赋值

转换帮助 : __asm__ __volatile__

matlab - Matlab 中结构内的元胞数组 - 可能吗?

c - insertAtTail 未在链表中添加节点

c++ - 为什么不能在不创建节点作为指针的情况下创建链表?