我找到一个有用的页面来解释how to use double pointers in a linked list
但有几点我不能理解。

void AddNodeSorted(node* pNewNode)
{
  node** ppScan = &pRootNode;
  while(*ppScan != NULL && compare(*ppScan,pNewNode))
    ppScan = &(*ppScan)->pNext;

  pNewNode->pNext = *ppScan;
  *ppScan = pNewNode;
}

在这个函数中,我无法理解最后两行是如何工作的。在我看来,在while loop之后,新项需要插入到ppScan间接指向的元素之前。
所以pNewNode->pNext = *ppScan工作正常。那么*ppScan = pNewNode是什么意思?pNewNode->next = pNewNode??

最佳答案

由于“ppScan=&(*ppScan)->pNext;”,“*ppScan=pNewNode;”将允许最后一个元素指向新节点。

关于c - 如何理解链表中的双指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33565142/

10-12 02:58