[英]how to understand 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;” 将让最后一个元素指向新节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.