如何在 C 中初始化此 NodeList class

How to initialize this NodeList class in C

我是 C 语言的新手,我有这段小代码,我想在其中的主要代码中做一些测试。

struct ListNode
{
    int val;
    struct ListNode *next;
};

我想在主代码中创建一些示例(例如:4 -> 9 -> 1),但我真的不知道如何初始化它们。提前谢谢你。

使用这个结构首先需要在main中声明一个指向链表头节点的指针,并初始化为空指针。例如

struct ListNode *head = NULL;

然后您需要编写一个函数,通过动态分配将添加到列表中的节点来将值存储在列表中。或者,如果您要在 main 中执行所有功能,则可以在循环中动态创建节点。

请注意,如果您有一个 singly-linked 列表,那么将新节点添加到列表的开头会更有效。或者,如果您想将新节点添加到列表的尾部,那么您应该声明一个 two-sided singly-linked 列表,例如

struct ListNode
{
    int val;
    struct ListNode *next;
};

struct List
{
    struct ListNode *head;
    struct ListNode *tail;
};

在这种情况下,main 中的列表声明可以类似于

struct List list = { .head = NULL, .tail = NULL };

我会这样做:

struct ListNode* addnode(struct ListNode *head,int val)
{
    struct ListNode* newnode = malloc(sizeof(*this));
    newnode->val = val;
    newnode->next = NULL;
    if (!head) head = newnode;
    else {
        struct ListNode *this = head;
        while(this->next)
            this = this->next;
        this->next = newnode;
    }
    return head;
}

int main(void)
{
    struct ListNode *head = NULL;

    head = addnode(head,4);
    addnode(head,9);
    addnode(head,1);

    return 0;
}