//链表的逆置2:从链表头开始遍历,遍历的同时直接反转next指针域,也需要三个辅助指针
void Inverse2(Node *phead) {
//当头节点为空或者只有一个头节点或者只有头节点加一个数据节点时,链表不需要反转
if (phead==NULL||phead->next==NULL||phead->next->next==NULL) {
return;
}
//temp:用于临时缓存pCurrent的下一个节点(保证后续节点”不丢失“)
//pCurrent:待反转next的节点域,
//pPre:pCurrent反转的next指向的节点(在未反转时是pCurrent的上一个节点)
Node* temp, * pCurrent, * pPre;
pPre = phead->next;
pCurrent = pPre->next;
while (pCurrent!=NULL) {
temp = pCurrent->next;
pCurrent->next = pPre;
pPre = pCurrent;
pCurrent = temp;
}
//然后将phead指向最后一个节点,并将现在的第一个节点的next置空
phead->next->next = NULL;
phead->next = pPre;
}
链表的逆置
最新推荐文章于 2022-09-25 20:43:19 发布