所以在我的代码中我有两个结构。第一个是一个节点,它包含一个 int 值和一个指向另一个节点的指针。第二个结构用于创建一个包含 10 个指针的数组,每个指针指向另一个节点。它还包含 link2,它将用于遍历数组及其指向的所有节点。我正在尝试添加 3 个节点,每个节点都将值 3 添加到数组的第三个索引中。第三个索引中的指针应该指向前 3,然后应该指向后三个,依此类推。当我把 add(a,3) 三次然后打印我得到分段错误。我尝试跟踪代码,但这对我来说仍然没有任何意义,因为我总是以三个节点结束。有人可以指出我的方向吗?谢谢!:)/>
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
int x;
struct node *link;
};
struct listofnodes
{
struct node *alist[10];
struct node *link2;
};
addFirst(struct listofnodes *a, int num)
{
struct node *nodeone = (struct node *)malloc(sizeof(struct node));
nodeone->x = num;
a->alist[num] = nodeone;
// printf("IT WENT THROUGH\n");
}
add(struct listofnodes *a, int num)
{
struct node *current;
current = a->alist[3];
struct node *nodeone = (struct node *)malloc(sizeof(struct node));
nodeone->x = num;
current->x = 5;
{
while (a->alist[3] != NULL)
{
if (a->alist[3]->link == NULL)
{
a->alist[3]->link = nodeone;
printf("IT WENT THROUGH\n");
break;
}
a->alist[3] = a->alist[3]->link;
}
}
}
main(void)
{
struct listofnodes *a =
(struct listofnodes *)malloc(sizeof(struct listofnodes));
// a->alist[3]=NULL;
addFirst(a, 3);
add(a, 3);
add(a, 3);
add(a, 5);
}