• Leetcode-206. 反转链表


    反转一个单链表。

    示例:

    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL
    进阶:
    你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-linked-list
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseList(ListNode* head) {
            ListNode* front = Rever(head);
            return front;
        }
        ListNode* Rever(ListNode* head)
        {
            if(head== NULL) return head;
            
            ListNode* Head = new ListNode(0);
            Head->next= head; //头节点,next指向head,当前链表的第一个元素;
            ListNode* last = Head; //指向原链表最后一个元素的指针;
            ListNode* start = Head; //指向下一个待换的元素,下个交换的起点;
            ListNode* first = head;  //指向当前要移动的点;
            
            while(last->next!= NULL)
            {
                /*找到链表最后一个元素;*/
                last= last->next; //last被重新赋值,和Head脱离关系;
            }
            
            /*
            如: Head->1->2->3->4->5->NULL
            
            Head->2->3->4->5->1->NULL
            Head->3->4->5->2->1->NULL
            Head->4->5->3->2->1->NULL
            Head->5->4->3->2->1->NULL
            
            */
            while (start->next!= last)
            {
                /*当前第一个元素不是原链表的最后一个元素时,交换还未结束*/
                
                /*第一步,取出要交换的元素,更新下一个要移动的点*/
                first = start->next;
                start->next = first->next; //start = Head,是同一个对象的指针,所以start的修改也会反应在first上;
                
                /*第二步,将first放到last后*/
                first->next = last->next;
                last->next = first;
            }
            return Head->next;
        }
    };
  • 相关阅读:
    使用commonscompress操作zip文件(压缩和解压缩)
    BoneCP的使用
    Struts2多文件上传
    shell 脚本转换 十六进制 十进制 八进制 二进制
    磁盘 I/O 性能监控指标和调优方法
    需求分析的故事——如何练就需求分析的火眼金晴?
    Debian 修改IP地址或DNS
    mysql主从备份
    ThinkPad T400 安装Windows Server 2008详细过程
    debian下,怎么ll命令注册
  • 原文地址:https://www.cnblogs.com/Amaris-diana/p/13235848.html
Copyright © 2020-2023  润新知