反转链表

思路1: 新建一个链表,把list每个节点插入在新链表的头部。此新链表即是所求

LNode*reverseLinkList(LinkList list)

{

    if(list==NULL||list->next==NULL) {

        returnlist;

    }

    LNode*node =NULL;

    LNode*temp = list;

    while(temp!=NULL) {

        LNode*current = temp;

        temp = temp->next;


        if(node ==NULL) {

            current->next=NULL;

        }else

        {

            current->next= node;

        }

        node = current;


    }

    printLinkList(node);

    return node;

}


思路二:迭代实现

LNode*reverseByDieDai(LNode*head)

{

    LNode *a = NULL;//a为已完成反转的头指针

    LNode *b = head;//b为未完成反转的链表的首节点指针

    LNode *c = NULL;//c为未完成反转的链表的第二个指针

    while(b!=NULL) {

        c = b->next;

        b->next= a;

        a = b;

        b = c;

    }

    printLinkList(a);

    return a;

}


思路三:递归实现

LNode*reverseLinkListByRe(LNode* head)

{

    if(!head||head->next==NULL) {

        returnhead;

    }

    LNode*current = head;


    LNode*reverse =reverseLinkListByRe(current->next);


    current->next->next= current;

    current->next=NULL;


    return reverse;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容