gpt4 book ai didi

c - C编程中的段错误链表

转载 作者:行者123 更新时间:2023-11-30 18:55:36 25 4
gpt4 key购买 nike

以下函数之一在我运行时会导致段错误。对我来说,它们看起来应该有效。我怀疑这与我使用 malloc 的方式有关。如果有人能指出哪个文件产生错误,我将永远感激不已。

这些功能非常不言自明。第一个从文件中读取 int 并将包含 int 的节点添加到链表的开头。第二个执行相同的操作,但将节点添加到末尾。第三个删除链表中的第三个节点,最后一个删除最后一个节点。

LinkedList readAndAddToStart(LinkedList list, FILE *inputFile) {
LinkedList head;
head = (LinkedList)malloc(sizeof(LinkedList));
int num;
fscanf(inputFile, "%d", &num);
head->data = num;
head->next = list;
return head;
}

LinkedList readAndAddToEnd(LinkedList list, FILE *inputFile) {
LinkedList addNode;
addNode = (LinkedList)malloc(sizeof(LinkedList));
LinkedList head;
head = list;
int num;
fscanf(inputFile, "%d", &num);
addNode->data = num;
addNode->next = NULL;
while (list->next != NULL) {
list = list->next;
}
list->next = addNode;
return head;
}

LinkedList deleteFirst(LinkedList list) {
LinkedList temp;
temp = list;
if (list != NULL) {
list = list->next;
free(temp);
temp = NULL;
}
return list;
}
LinkedList deleteLast(LinkedList list) {
LinkedList head;
head = list;
if (list != NULL) {
while (list->next->next != NULL) {
list = list->next;
}
free(list->next);
list->next = NULL;
}
return head;
}

顺便说一句,我的结构看起来像这样

struct ListNode {
int data;
struct ListNode *next;
};


typedef struct ListNode *LinkedList;

最佳答案

如果 list 为空,

readAndAddToEnd 将崩溃。如果列表只有一个元素,deleteLast 将崩溃。

关于c - C编程中的段错误链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339450/

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