gpt4 book ai didi

c - Array of Linked List,移动到下一个节点错误;

转载 作者:太空狗 更新时间:2023-10-29 15:40:59 26 4
gpt4 key购买 nike

基本上我想要一个链表数组,每个链表都有自己的标题。这是我的代码:

struct node{
int location;
struct node *next;
struct node *previous;
};

typedef struct ListHeader{
nodeType *first;
nodeType *current;
nodeType *last;
} ListHeader;

struct adjList{
ListHeader *header;
int size;
};

struct List{
adjListType *list;
int size;
};

ListType newList(int numVerts){
ListType new = malloc(sizeof(struct List));
new->list = calloc(numVerts, sizeof(adjListType));
new->size = numVerts;
int i;
for(i = 0; i <= numVerts; i++){
new->list[i] = newAdjList();
}
return new;
}

adjListType newAdjList(void){
adjListType new = malloc(sizeof(struct adjList));
new->header = malloc(sizeof(ListHeader));
new->header->first = NULL;
new->header->current = NULL;
new->header->last = NULL;
new->size = 0;
return new;
}

nodeType newNode(int location){
nodeType new = malloc(sizeof(struct node));
new->location = location;
return new;
}

当我尝试使用这段代码移动到链表中的下一个节点时,它给了我一个错误(ListType l, int 位置)

l->list[location]->header->current = l->list[location]->header->current->next; 

这是我遇到的错误:

成员引用基类型“nodeType”(又名“struct node*”)不是结构或 union

最佳答案

如果你想要链表数组,为什么要使用指针?

struct List{
adjListType list[10];
int size;
};

当然您也可以使用 Pointer,但是您需要向我们展示如何使用 calloc 为其分配数组内存?


根据有问题的更新代码..下面是错误修复行...

ListType newList(int numVerts){
ListType new = malloc(sizeof(struct List));
new->list = calloc(numVerts, sizeof(struct adjListType));//Here you missed struct
new->size = numVerts;
int i;
for(i = 0; i < numVerts; i++){ // Here <= instead of < for 10 length array is 0 to 9
new->list[i] = newAdjList();
}
return new;
}

此外,您可能希望返回 &new 作为引用,否则您最终会创建不必要的副本...

我正在查看您的代码,如果我发现任何其他问题,我会更新此答案。同时,如果您能告诉我们您遇到了什么错误,那就太好了?

同样在您显示的代码中,您将 nextprevcurrent 设置为 NULL 但您在哪里更改这些值...否则您将继续收到 NULL POINTER EXCEPTION

关于c - Array of Linked List,移动到下一个节点错误;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16729828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com