翻转单链表

作者: b64c74899092 | 来源:发表于2016-08-25 23:25 被阅读108次

    翻转单链表

    方法一:将单链表头插到一个新链表中

    浪费空间,不过简单


    方法二:使用三个指针遍历单链表,逐个点进行翻转

    p=head
    q=head->next
    head->next=null
    
    while(q->next!=null){
        r=q->next
        q->next=p
        p=q
        q=r
    }
    

    方法三:从第三个节点到最后一个节点,依次将其插入到第一个节点之后,最后将第一个节点移到表尾

    ListNode* p; 
    ListNode* q; 
    p=head->next; 
    while(p->next!=NULL){ 
        q=p->next; 
        p->next=q->next; 
        q->next=head->next; 
        head->next=q; 
    } 
    
    p->next=head;//相当于成环 
    head=p->next->next;//新head变为原head的next 
    p->next->next=NULL;//断掉环 
    return head;  

    相关文章

      网友评论

        本文标题:翻转单链表

        本文链接:https://www.haomeiwen.com/subject/tkiasttx.html