gpt4 book ai didi

c - 我尝试添加链接列表时遇到问题,但调试器说无法访问临时内存

转载 作者:行者123 更新时间:2023-11-30 16:38:28 25 4
gpt4 key购买 nike

我尝试将数据插入到列表末尾,但它不起作用:运行时发生异常。

struct gradeNode *newNode = (struct gradeNode*)malloc(sizeof(struct gradeNode));
assert(newNode != NULL);

strcpy(newNode->courseName, courseName); // copying the course name
newNode->next = NULL;

struct gradeNode *temp = students[i].gradelist->head; // a temp

// here is the problem: the debugger says ecxeption, can't access memory
while (temp->next != NULL)
{
temp = temp->next; // I can't get to here
temp->next = newNode;
}

最佳答案

在此代码片段中

    struct gradeNode *temp = students[i].gradelist->head;//a temp
while (temp->next != NULL)//

数据成员head未正确初始化或等于NULL。在这两种情况下,表达式 temp->next 都会导致未定义的行为。

这个循环(在你编辑代码之后)

while (temp->next != NULL) 
{
temp = temp->next; // I can't get to here
temp->next = newNode;
}

没有意义。看来你的意思是

while (temp->next != NULL) 
{
temp = temp->next; // I can't get to here
}
temp->next = newNode;

无论如何,所使用的方法都是错误的。

请尝试以下操作

    struct gradeNode **temp = &students[i].gradelist->head;//a temp
while ( *temp ) temp = &( *temp )->next;

*temp = newNode;

考虑到单向单向链表并尝试将数据追加到链表末尾在逻辑上是不一致的。如果要将数据追加到单链表的末尾,则应将该列表定义为双向链表。

关于c - 我尝试添加链接列表时遇到问题,但调试器说无法访问临时内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47471759/

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