我正在实施双连接列表。 (有一个头,右边的链接和左边的链接...)
我想使用该链接列表创建一个多连接列表。
所以..
typedef int element;
typedef struct Node
{
element id_num;
element course_num;
struct Node *next;
struct Node *prev;
} Node;
typedef struct List
{
Node *head;
} List;
Node *courses[35];
Node *students[500];
有如上所示的代码。 如果我写下面的代码
List *list = (List *)malloc(sizeof(List));
list->head = *courses;
我可以访问courses数组中的每个索引吗? 如果没有,我该怎么办?
答案 0 :(得分:0)
您的数据设计存在多个问题,但主要问题似乎是:
[鉴于]
typedef struct List { Node *head; } List; Node *courses[35];
[和]
list->head = *courses;
我可以访问courses数组中的每个索引吗?
*courses
相当于courses[0]
。也就是说,它是数组的零 th 元素的值。它具有正确的分配类型(Node *
),但是 否 ,该指针的值不会传达有关存储位置的信息({{1}从中复制它。因此,该值本身并不提供遍历courses[0]
数组的机制。
这是一个类似的例子:
courses
int array[] = { 7, 3, 52 };
int i = *array;
的初始值不提供遍历i
元素的机制。
如果没有,我该怎么办?
如果要遍历数组,则需要指向数组的指针(in),而不仅仅是其元素之一的值(即使元素本身可能指向其他元素)。我不明白你为什么不直接使用array
,但是如果你想避免使用它,那么你可以使用指向它的指针,或者它的第一个元素(后者在语法上是有点容易):
courses