前端算法-翻转链表

简介: 前端算法-翻转链表

题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

输入: head = [1,2,3,4,5]
输出: [5,4,3,2,1]
输入: head = [1,2]
输出: [2,1]

题解

反转链表其实就是将链表中的数据进行换位的一个过程,我们这里进去先判断一下当前出参head是否是一个链表或出参head的长度是否小于等于零,如果满足这两个条件中的任何其中一项,则直接把出参head返回出去,如果都不满足我们则往下继续执行,由于我们涉及到了换位,所以我们这里需要使用到两个变量,我们声明一个prve变量让他代表尾部,在声明一个curr变量让他代表头部,我们先将出参head赋值给curr变量,然后使用循环对其做一个换位操作,循环的判断条件是,如果当前的curr变量转换成布尔值为true的话则进行循环,进入循环后我们进行换位操作,先在循环内部声明一个next常量,我们将每次循环的头部下一个进行存储到这里,以便于后面进行换位,我们将prve变量赋值给curr.next,然后再把curr变量赋值给prve变量,在将存储头部下一个数据的next变量赋值给curr变量,即可完成数据反转的操作,循环完后,我们在将存储反转数据的变量给返回出去即可

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
if(!Array.isArray(head)||head.length<=0){
    return head;
}
let prve = null;
let curr = head;
while(curr){
const next = curr.next;
curr.next = prve;
prve = curr;
curr = next;
}
return prve;
};

坚持努力,无惧未来!

相关文章
|
5天前
|
前端开发 算法
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
|
6天前
|
移动开发 算法 前端开发
前端算法之堆排序
前端算法之堆排序
15 1
|
6天前
|
算法 前端开发
前端算法之快速排序
前端算法之快速排序
14 0
|
6天前
|
算法 前端开发 搜索推荐
前端算法之归并排序
前端算法之归并排序
13 0
|
1天前
|
存储 算法 索引
数据结构与算法④(第二章下)链表概念+单链表的实现
数据结构与算法④(第二章下)链表概念+单链表的实现
7 0
|
5天前
|
缓存 算法 前端开发
前端开发者必知的缓存淘汰策略:LRU算法解析与实践
前端开发者必知的缓存淘汰策略:LRU算法解析与实践
|
6天前
|
存储 算法 Java
数据结构与算法 数组和链表
数据结构与算法 数组和链表
12 0
|
6天前
|
算法 前端开发
前端算法之基数排序
前端算法之基数排序
11 1
|
6天前
|
算法 前端开发 搜索推荐
前端算法之桶排序
前端算法之桶排序
7 1
|
6天前
|
存储 算法 前端开发
前端算法之计数排序
前端算法之计数排序
12 1