在原链表上将连表进行倒置

 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指针指向新的一头

}
 

猜你喜欢

转载自blog.csdn.net/qq_37163944/article/details/89092767
今日推荐