如何在 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;
}
我是 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;
}