LeetCode 面试题24. 反转链表

题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/

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

示例:

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

限制:

0 <= 节点个数 <= 5000

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8
 9 struct ListNode* reverseList(struct ListNode* head){
10     if(head==NULL||head->next==NULL) return head;
11     struct ListNode *pre=NULL,*cur=head,*tmp;
12     while(cur){
13         tmp=cur->next;
14         cur->next=pre;
15         pre=cur;
16         cur=tmp;
17     }
18     return pre;
19 }

原文地址:https://www.cnblogs.com/shixinzei/p/12373299.html

时间: 2024-11-05 22:52:10

LeetCode 面试题24. 反转链表的相关文章

【剑指Offer】面试题24. 反转链表

题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 注意:本题同[LeetCode]206. 反转链表 思路一:反转链表元素 取出链表中元素放入vector中,然后将vector中元素逆向存入链表中. 遍历链表,用vector存放数组元素. 再次遍历链表,从ve

剑指offer和leetcode都有的_反转链表

输入一个链表,反转链表后,输出链表的所有元素. 一开始我的做法非常复杂,因为我一次变了两个指针,导致要分别判断单数个结点和偶数个结点的情况. 反转链表要解决的两个问题就是 1.结点指向它的前驱 2.头结点变为其尾结点 当反转一个结点时,假设反转i,首先需要记录它的前驱,让它指向它的前驱,还需要记录它的后继结点,否则就会造成链表的断裂,所以至少需要三个结点. 后来我整理了一下思路,发现有两种方法,一种用的是循环,一种用的是递归. 1.循环做法 /**循环做法来反转链表 * 思路是用三个指针来记录,

LeetCode 面试题 02.05. 链表求和

题目链接:https://leetcode-cn.com/problems/sum-lists-lcci/ 给定两个用链表表示的整数,每个节点包含一个数位. 这些数位是反向存放的,也就是个位排在链表首部. 编写函数对这两个整数求和,并用链表形式返回结果. 示例: 输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912进阶:假设这些数位是正向存放的,请再做一遍. 示例: 输入:(6 -> 1 -&

[leetcode]61. Rotate List反转链表k个节点

类似于找链表的后k个节点 不同的是要把前边的接到后边 public ListNode rotateRight(ListNode head, int k) { //特殊情况 if (head==null||head.next==null||k==0) return head; int len = 0; ListNode p = head; //计算链表长度,防止k大于长度 while (p!=null) { len++; p = p.next; } //k大于等于len的情况 k = k>=len

【LeetCode】206. 反转链表

题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表.你能否用两种方法解决这道题? 注意:本题同[剑指Offer]面试题24. 反转链表 思路一:反转链表元素 取出链表中元素放入vector中,然后将vector中元素逆向存入链表中. 遍历链表,用vector存放数组元素. 再次遍历链表,从vector尾部读取元素依次放入链表中. 代码

链表面试题(一):反转链表的算法实现

关于链表的考察 链表是面试里面经常涉及到的考点,因为链表的结构相比于Hashmap.Hashtable.Concurrenthashmap或者图等数据结构简单许多,对于后者更多面试的侧重点在于其底层实现.比如Hashmap中Entry<k,v>等操作.如何扩容.容量的设定等.链表的考察更侧重于代码的书写和思路的形成.虽然说,链表的结构简单,但是涉及到指针的操作,容易引申出一些挑战性的考题,其中也牵涉到诸多小的细节的考虑,更能看出代码书写的能力和功底. 面试题:反转链表 题目:定义一个函数,输入

每天一道面试题LeetCode 206 -- 反转链表

LeetCode206 反转链表 思路 代码 # # @lc app=leetcode.cn id=206 lang=python3 # # [206] 反转链表 # # https://leetcode-cn.com/problems/reverse-linked-list/description/ # # algorithms # Easy (61.53%) # Likes: 624 # Dislikes: 0 # Total Accepted: 112.8K # Total Submiss

面试题24:反转链表

NowCoder <?php header("content-type:text/html;charset=utf-8"); /* * 输入一个链表,反转链表后,输出新链表的表头.P142 */ class ListNode{ var $val; var $next = NULL; function __construct($x){ $this->val = $x; } } function ReverseList($pHead) { if($pHead == null |

Leetcode:Reverse Linked List II 反转链表区间

Reverse Linked List II Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given   1->2->3->4->5->NULL,  m = 2 and n = 4, return  1->4->3->2->5->NULL. Note:Given m, n satisfy the following