算法设计与分析01-链表的逆置

一.最常用的方法:

LNode*  ReverseList(LNode* head)
{
    if (head == NULL)
        return NULL;
    if (head->next == NULL)
        return head;
    LNode* pre = NULL;
    LNode* Cur = head;
    LNode* Nex = NULL;
    while (Cur!=NULL)
    {
        Nex = Cur->next;
        Cur->next = pre;
        pre = Cur;
        Cur = Nex;
    }
    return pre;
}
二.利用递归方法:

LNode* ReverList1(LNode* head)
{
    if (head == NULL)
        return NULL;
    if (head->next == NULL)
    {
        return head;
    }
    LNode* Node = head; //保留上一个结点
    LNode* Nex = head->next;
    LNode* HeadNode = ReverList1(Nex);
    Nex->next = Node; //逆置
    Node->next = NULL; //这句必须有,否则会产生循环链表
    return HeadNode;//返回逆置链表的尾结点
    
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章