如何理解链表中的双指针
how to understand double pointers in a linked list
我找到了一个有用的页面,其中解释了 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;"会让最后一个元素指向新节点。
我找到了一个有用的页面,其中解释了 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;"会让最后一个元素指向新节点。