A->B->C->D->E
利用三个指针进行操作
首先p1指向A的前面 p2指向A p3指向B
p2->next指向p1 p3->next指向 p2;
然后将 p1、p2 、p3全部将后移一位
代码实现:
void reverse(Node *&head)
{
if (head == NULL || head->next==NULL) //空或者只有一个元素不用逆置
return;
Node *pre, *cur, *rear;
pre = head;
cur = head->next;
while (cur)
{
rear = cur->next;
cur->next = pre;
pre = cur;
cur = rear;
}
//以下两步,很重要
head->next = NULL; //这一步会使新的尾节点的链域置空
head = pre; //head指针指向新的一头
}