问题描述
我是一名初学 C 程序员。我目前正在学习链表。大多数示例解释了如何在链接列表的每个头部存储/插入一个数据元素,如下所示:
[1],[下一个节点的地址] -> [2],[下一个节点的地址] -> [3],[下一个节点的地址] ->......
但是,我想知道是否可以在链表中存储多个元素,如下所示:
[1,2,3],[下一个节点的地址] -> [4,5,6],[下一个节点的地址] -> [7,8,9],[下一个节点的地址节点] -> .....
[ ],[ ] 代表一个有数据和链接的节点。 上述表示中的数据以数组的形式存储了 3 个元素。
PS:抱歉,视觉表现不佳。
TIA
解决方法
是的,链表的每个节点可以有多个数据。一个例子是-
typedef struct node{
int val;
int val2;
int array[30];
char x;
struct node *next;
}node;
你可以像这样访问数组-
n.array[index] // by node variable(n is a variable name)
n->array[index] // by node pointer(n is a node pointer)
,
是的,您可以在链接列表中存储任何内容。要存储不同类型的变量,您需要使用 struct。并且对于每个节点,您需要为其分配足够的内存。让我们举个例子,你想在一个结构体中存储一个数组 int[10]。那么这将是您的节点:
struct node
{
int array[10]
struct node * next;
};
要分配足够的空间:
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
然后您可以通过以下方式访问节点数组:
node.array[0] = 10;
node.array[1] = 11;
等等