链表之带头结点的单链表就地逆置

原理如图:
链表之带头结点的单链表就地逆置_第1张图片

int reveseList(Linklist L)
{
    Node *p = L->next;//p为原链表当前处理的节点
    Node *q = NULL;//q指针保留当前处理节点的下一个节点
    L->next = NULL;//将原链表置为空

    while (p!=NULL)//当原链表还未处理完
    {
        q = p->next;//q指向正处理的下一个节点

        p->next = L->next;//将p节点的地址接在p节点后面

        L->next = p;//将头指针接在p节点上

        p = q;//互换
    }
}

你可能感兴趣的:(数据结构)