gpt4 book ai didi

c - 为什么双向链表代码显示内存错误?

转载 作者:行者123 更新时间:2023-11-30 19:39:17 25 4
gpt4 key购买 nike

我只想尝试从双向链表插入和删除元素的代码,但我不明白为什么此代码显示内存错误五次。当我删除内存错误检查部分时,这段代码工作得很好。这是我的代码(下面只是实际代码的一部分)

struct listNode {
int data;
struct listNode* next;
struct listNode* prev;
};
typedef struct listNode Node;
Node* head;

void DLLInsert(int data, int position)
{
int k = 1;
Node* temp, *newNode;

newNode = (Node*)malloc(sizeof(Node));

//Always check for memory errors
if(newNode)
{
printf("memory error");
return;
}
newNode->data = data;

//Inserting a node at the beginning of the list
if(position == 1)
{
newNode->next = head;
newNode->prev = NULL;
if(head)
{
head->prev = newNode;
}
head = newNode;
return;
}
temp = head;
while((k<position-1)&&temp->next!=NULL) //traversal
{
temp=temp->next;
k++;
}
if(k!=position-1)
{
printf("Desired position does not exist\n");
}
newNode->next = temp->next;
newNode->prev=temp;

if(temp->next)
temp->next->prev=newNode;
temp->next=newNode;
return;
}

任何有关此行为的解释将不胜感激:)

最佳答案

我认为你开的支票是错误的。它必须如下所示:

if (NULL == newNode) OR if (!newNode)
{
//your code
}

关于c - 为什么双向链表代码显示内存错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685270/

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