在我的作业中,我必须编写一个函数,该函数将一个指向“LNode”结构的指针和一个整数参数作为参数。然后,我不仅要将该整数添加到链表中,还要将其放置以便列表按正确的升序排列。我已经尝试了几种不同的尝试,这是我发布时的代码。
LNode* AddItem(LNode *headPtr, int newItem)
{
auto LNode *ptr = headPtr;
ptr = malloc(sizeof(LNode));
if (headPtr == NULL)
{
ptr->value = newItem;
ptr->next = headPtr;
return ptr;
}
else
{
while (headPtr->value > newItem || ptr->next != NULL)
{
printf("While\n"); // This is simply to let me know how many times the loop runs
headPtr = headPtr->next;
}
ptr->value = newItem;
ptr->next = headPtr;
return ptr;
}
} // end of "AddItem"
当我运行它并尝试插入一个 5 和一个 3 时,5 被插入,但随后 while 循环运行一次,我得到一个分段错误。
此外,我无法更改参数,因为它是该项目的骨架代码的一部分。感谢任何能提供帮助的人。
如果它有帮助,这就是结构的样子
typedef struct LNode
{
int value;
struct LNode *next;
} LNode;