单链表逆转算法
1 void rev(linknode **phead) 2 { 3 linknode *p1, *p2, *p3; 4 p1 = p2 = p3; 5 if ((*phead == NULL) || (*phead)->pNext == NULL) 6 { 7 return; 8 } 9 else 10 { 11 p1 = *phead; 12 p2 = p1->pNext; 13 while (p2 != NULL) 14 { 15 p3 = p2->pNext; 16 p2->pNext = p1; //让本应该指向前方的pNext指针向反方向指去.也是实现逆转最关键的一步. 17 p1 = p2; //把p1移动到p2的位置,{p1指针指向p2的节点} 18 p2 = p3; //把p2移动到p3的位置,{p2指针指向p3的节点} 19 } 20 (*phead)->pNext = NULL; 21 (*phead) = p1; 22 } 23 24 }
浙公网安备 33010602011771号