单向链表反转算法
struct Node
{
int n;
Node* pNext;
}
void Reverse(Node* n, Node* pre, Node* p)
{
if(n->pNext!=NULL)
{
Reverse(n->pNext, n, p);
}
else if(n->pNext==NULL)
{
p = n;
}
n->pNext = pre;
}
void Reverse2(Node* head)
{
Node* pe = head;
Node* ps = head->next;
while (ps)
{
pe->next = ps->next;
ps->next = head;
head = ps;
ps = pe->next;
}
}
void Test()
{
Node* p = NULL;
......
Node* pNew = NULL; //逆向后结果
Reverse(p, NULL, pnew);
Reverse2(p);
}
浙公网安备 33010602011771号