zoukankan      html  css  js  c++  java
  • Leecode刷题之旅-C语言/python-206反转链表

    /*
     * @lc app=leetcode.cn id=206 lang=c
     *
     * [206] 反转链表
     *
     * https://leetcode-cn.com/problems/reverse-linked-list/description/
     *
     * algorithms
     * Easy (58.89%)
     * Total Accepted:    41.2K
     * Total Submissions: 69.9K
     * Testcase Example:  '[1,2,3,4,5]'
     *
     * 反转一个单链表。
     * 
     * 示例: 
     * 输入: 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* p = head;
        struct ListNode *q = NULL;
        if(head==NULL||head->next==NULL)
        {
            return head;
        }
        while(p!=NULL){
            struct ListNode *temp;
            temp = p->next;
            p->next=q;
            q = p;
            p = temp;
        }
        return q;
    }

    这里设置了三个listnode指针变量。 如果比较难理解的话画个图就会好懂很多。

    -----------------------------------------------------------------------------------------------------

    python:

    #
    # @lc app=leetcode.cn id=206 lang=python3
    #
    # [206] 反转链表
    #
    # https://leetcode-cn.com/problems/reverse-linked-list/description/
    #
    # algorithms
    # Easy (58.89%)
    # Total Accepted:    41.2K
    # Total Submissions: 69.9K
    # Testcase Example:  '[1,2,3,4,5]'
    #
    # 反转一个单链表。
    # 
    # 示例:
    # 
    # 输入: 1->2->3->4->5->NULL
    # 输出: 5->4->3->2->1->NULL
    # 
    # 进阶:
    # 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
    # 
    #
    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        def reverseList(self, head: ListNode) -> ListNode:
            if head is None:
                return None
            cur = head
            pre = None
            nxt = cur.next
            while nxt:
                cur.next = pre
                pre = cur
                cur = nxt
                nxt = nxt.next
            cur.next = pre
            head = cur
            return head
  • 相关阅读:
    正则表达式复习 (?<=) (?=)
    HTML 30分钟入门教程
    C# 多线程详解
    C# List
    C# 枚举
    C# 线程数
    C# 泛型2
    C# 泛型
    C# 结构体
    不用Google Adsense的84个赚钱方法
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10552529.html
Copyright © 2011-2022 走看看