У меня возникли проблемы с пониманием упорядоченный связанный список в С.Понимание сортированного списка
У меня есть следующий код:
void create(ListNode **pStart, int input)
{
ListNode *pNew;
ListNode *pPrevious;
ListNode *pCurrent;
pNew = malloc(sizeof(ListNode));
if (pNew != NULL)
{
pNew->data = input;
pNew->pNext = NULL;
pPrevious = NULL;
pCurrent = *pStart;
while (pCurrent != NULL && input > pCurrent->data)
{
pPrevious = pCurrent;
pCurrent = pCurrent->pNext;
}
if (pPrevious == NULL)
{
pNew->pNext = *pStart;
*pStart = pNew;
}
else
{
pPrevious->pNext = pNew;
pNew->pNext = pCurrent;
}
}
else
{
printf("%c not inserted. No memory available.\n", input);
}
}
У меня проблемы только понять ту часть, где он говорит pCurrent = *pStart;
Как ISN Технически это первый головной узел? Что представляет собой pCurrent = *pStart
?
Вы просто сохранить копию заголовка, так как он прошел мимо референс –
Нам необходимо найти узел, где должен быть вставлен новый узел. После 'pCurrent = * pStart;', 'pcurrent' указывает на первый узел списка. Затем мы перебираем с узла на узел с помощью 'pCurrent', пока' input' больше, чем 'pcurrent-> data'. Возьмите карандаш и лист бумаги и нарисуйте список. 'pNew' - это указатель на ** новый ** узел, который изначально не является частью списка. –