访问连接到结构指针的结构布置

时间:2018-05-22 18:41:33

标签: c

我正在实施双连接列表。 (有一个头,右边的链接和左边的链接...)

我想使用该链接列表创建一个多连接列表。

所以..

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数组中的每个索引吗? 如果没有,我该怎么办?

我想要实现的多链表: multi linked list that I want to implement.

1 个答案:

答案 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