gpt4 book ai didi

C:链表的结构体初始化导致访问冲突异常

转载 作者:行者123 更新时间:2023-11-30 15:03:17 24 4
gpt4 key购买 nike

我有一个关于 C 中的链接列表/结构的问题。我正在尝试将顶点添加到链接列表并用数据填充它们。为什么即使我事先为 newHead 分配了内存,我也会在 newHead->name = newVertexName 处遇到访问冲突?

上下文代码:

typedef struct Vertex Vertex;

typedef struct Vertex
{
char name;
Vertex *next;
} Vertex;

struct Vertex* AddVertex(Vertex* head, char newVertexName)
{
Vertex* newHead = malloc(sizeof(Vertex));
newHead->name = newVertexName; // Access violation occuring here
newHead->next = head;
return newHead;
}

int main()
{
char s[100];
const int nNrOfVerts = 27;
Vertex* adjList[28];

for(int i = 0; i <= nNrOfVerts; ++i)
{
adjList[i] = NULL;
}

for(int i = 1; i <= nNrOfVerts; ++i)
{
if(scanf("%s", s) == 1)
{
adjList[i] = AddVertex(adjList[i], s[i-1]);
}
else
{
break;
}
}

return 0;
}

谢谢!

最佳答案

首先,您必须包含文件:

#include <stdlib.h> /* for malloc/free */
#include <stdio.h> /* for scanf */

它修复了您的访问冲突。

其次,我认为你这里有错误:

adjList[i] = AddVertex(adjList[i], s[i-1]);

对比:

adjList[i] = AddVertex(adjList[i-1], s[i-1]);

关于C:链表的结构体初始化导致访问冲突异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40795831/

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