В моем назначении мне нужно написать функцию, которая принимает в качестве аргументов указатель на структуру «LNode» и целочисленный аргумент. Затем я должен не только добавить это целое число в связанный список, но и разместить его так, чтобы список находился в правильном порядке возрастания. Я пробовал несколько различных попыток, и это мой код для публикации.Добавление и сортировка связанного списка в C
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 Вставляется, но затем цикл пока выполняется один раз, и я получаю ошибку сегментации.
Также я не могу изменить аргументы, поскольку это часть скелетного кода для этого проекта. Спасибо всем, кто может помочь.
Если это помогает, это то, что структура выглядит
typedef struct LNode
{
int value;
struct LNode *next;
} LNode;
Есть ли у вас опыт работы с gdb? Было бы поучительно проходить через программу по мере ее запуска и наблюдать за тем, что делают все переменные. – gcbenison
headPtr ваш головной узел и новый узел ptr? –