Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 关于多个单链表的问题_C - Fatal编程技术网

C 关于多个单链表的问题

C 关于多个单链表的问题,c,C,我正在尝试使用列表结构和节点结构创建多个单链接列表。我想的是,每一张新的名单都是由不同的人来区分的。但让我困惑的是,如何为每个列表初始化一个新的头,然后添加节点 当我只处理一个列表时,我能够为一个头部指针分配内存并将其设置为NULL,然后添加新节点 我的结构如下所示,以供参考: typedef struct node { int value; struct node *next; }node_t; typedef struct list { struct list *head

我正在尝试使用列表结构和节点结构创建多个单链接列表。我想的是,每一张新的名单都是由不同的人来区分的。但让我困惑的是,如何为每个列表初始化一个新的头,然后添加节点

当我只处理一个列表时,我能够为一个头部指针分配内存并将其设置为NULL,然后添加新节点

我的结构如下所示,以供参考:

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

typedef struct list
{
   struct list *head;
   int size;
}list_t;
node_t node1;
node_t node2;

node1.value = 1;
node1.next = &node2;
node2.value = 1;
node2.next = NULL;

list_t list;
list.head = &node1;
list.size = 2;
如果你觉得我对某些事情不清楚,尽管问,我会澄清的! 谢谢,在你的列表结构中,head实际上应该是一个节点-列表中的第一个节点。 然后通过将另一个节点指定给下一个节点来链接这些节点

供参考的简单示例:

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

typedef struct list
{
   struct list *head;
   int size;
}list_t;
node_t node1;
node_t node2;

node1.value = 1;
node1.next = &node2;
node2.value = 1;
node2.next = NULL;

list_t list;
list.head = &node1;
list.size = 2;

在多次重读你的问题之后,我可能最终理解了你想要实现的目标。您希望列表\u t包含多个类型为node \u t的列表。然后,您需要使head成为一个node \u t指针数组,如下所示:

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

typedef struct list
{
   node_t *head[2];
   int size;
}list_t;
为了简单起见,我使用了静态大小为2的数组。如果您想使其动态化,则需要自己处理内存分配

和示例代码:

// list1
node_t node11;
node_t node12;   
node11.value = 1;
node11.next = &node12;
node12.value = 1;
node12.next = NULL;

//list2
node_t node21;
node_t node22;
node11.value = 2;
node11.next = &node22;
node12.value = 2;
node12.next = NULL;

list_t list;
list.head[0] = &node11;
list.head[1] = &node21;
list.size = 2;

你尝试了什么?它是如何工作的?当我只使用一个列表时,我可以为一个头部指针分配内存,并将其设置为NULL,然后添加新节点:你应该至少向我们展示代码。对不起,我的问题不清楚。我说这句话的意思是,我在另一个练习中这样做了,我没有链接结构,所以我只处理了一个列表。我没有表现出来,因为我认为这与这个问题不太相关。哇,非常感谢你花时间回答我的问题!对不起,我不太准确,因为我对这个主题和整个编程都是新手。现在我读了你的两个答案,我真正的意思是列表用来包含该列表中的所有节点。据我所知,你的第一个答案似乎就是我要找的。例如,list1有两个节点2和1。头部指的是2,然后2成为头部。node2.next=&node1和node1.next=NULL。要创建第二个列表,我也会这样做。清单2。再创建两个节点3和4。。。。。。。。。。其中list.head=&node4和node4.next=&node3和node3.next=NULL。现在我应该有两份清单了?是的,正是你说的。我的第一个答案是链表通常的教学方法。如果它回答了您的问题,您可以将其标记为已接受答案。