Понимание использования конечного указателя в алгоритме сортировки вставок - PullRequest
0 голосов
/ 06 апреля 2019

Я исследовал сортировку вставки списка реализацию и боролся с использованием конечного указателя.

Итак, я понимаю основную идею и код с базовыми манипуляциями с указателем, но не могу пойматьпошаговый процесс сортировки с использованием конечного указателя.

Пример кода приведен здесь:

struct LIST * SortList(struct LIST * pList)
{
  if(!pList || !pList->pNext)
      return pList;

  struct LIST * pSorted = NULL;

  while (pList != NULL)
  {
      struct LIST *   pHead  = pList;
      struct LIST ** ppTrail = &pSorted;

      pList = pList->pNext;

      while (!(*ppTrail == NULL || pHead->iValue < (*ppTrail)->iValue))
      {
          ppTrail = &(*ppTrail)->pNext;
      }

      pHead->pNext = *ppTrail;
      *ppTrail = pHead;
  }

  return pSorted;
}

Похоже, ppTrail используется для хранения отсортированной части данных инеясно, что происходит во внутреннем цикле while.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...