Day 64/100 数据结构链表(6)——反转链表

(一)需求 链表除了增删改查,今儿的是反转链表
(二)反转链表 1、问题描述
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
Day 64/100 数据结构链表(6)——反转链表
文章图片

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

2、思路:
循环遍历改变每一个节点的指向;
Day 64/100 数据结构链表(6)——反转链表
文章图片

请记住,黑色结点 23 是原始的头结点。
  1. 首先,我们将黑色结点的下一个结点(即结点 6)移动到列表的头部:
Day 64/100 数据结构链表(6)——反转链表
文章图片

  1. 然后,我们将黑色结点的下一个结点(即结点 15)移动到列表的头部:
Day 64/100 数据结构链表(6)——反转链表
文章图片

  1. 黑色结点的下一个结点现在是空。因此,我们停止这一过程并返回新的头结点 15。
3、代码
* 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) { let pre = null let cur = head while(cur){ const next =cur.next cur.next = pre //把当前点的下一个坐标给到先前的节点 pre = cur // 把当前的节点给到先前的节点对象 cur = next //把下一个对象给到当前对象 } return pre // 最后一个是null,所以最后一个节点是上一个节点 };

空间复杂度将是 O(1)
时间复杂度将是 O(n)
以上
参考链接
https://leetcode.cn/leetbook/...
写在最后的话
学习路上,常常会懈怠 【Day 64/100 数据结构链表(6)——反转链表】《有想学技术需要监督的同学嘛~》
https://mp.weixin.qq.com/s/Fy...

    推荐阅读