zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    数组中寻找和为X的两个元素
    JSP&Servlet学习笔记(一)
    自下而上的动态规划算法
    计数排序
    快速排序
    堆排序
    LeetCode-001题解
    算法不归路之最大子序列(C++版)
    算法不归路之插入排序(C版)
    互联网五层模型
  • 原文地址:https://www.cnblogs.com/Amaris-diana/p/13235848.html
Copyright © 2011-2022 走看看