• 24反转链表


    题目描述:

    定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

     

    示例:

    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL

    代码:

    迭代法

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    
    
    struct ListNode* reverseList(struct ListNode* head){
        struct ListNode *cur=head;
        struct ListNode *pre=NULL;
        while(cur!=NULL)
        {
            struct ListNode *tmp=cur->next;
            cur->next=pre;
            pre=cur;
            cur=tmp;
        }
        return pre;
    }
    

     

    总结:

    三种方法:

    ①利用外部空间

    申请一个动态扩容的数组,将整个链表中的值存入数组或者容器中,然后反向取出

    但是这种方法空间复杂度高,不是一种很好的方法

    ②双指针迭代

    定义两个指针,一个pre,一个cur,以及一个tmp临时变量,用来保存cur->next的值

    循环结束的条件是cur指向为空,则pre当前指向的元素就是反转链表要返回的元素

    ③递归解法:

    递归法代码不会写

  • 相关阅读:
    工单组件增强
    一些BAPI
    实例程序
    使用BAPI一定要提交和回滚(错误)
    动态内表值导出为TXT文件
    网页常用功能
    Code Complete
    Typescript 解构 、展开
    Typescript变量声明
    TypeScript基础数据类型
  • 原文地址:https://www.cnblogs.com/redzzy/p/13359100.html
Copyright © 2020-2023  润新知