刷题-链表反转

一、题目

刷题-链表反转

 

二、重点难点分析

  1.链表是什么?

  答:是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。

  2.我们把next指针指向上一个元素就可以满足反转的链表,但是前提得先把下一个指向的元素存储起来,然后利用一个while循环跑即可。

三、代码展示

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    // 反转链表
    let tmp = null;
    // 正向链表指向头指针
    let node = head;
    // 当node跑完正向链表就结束循环
    while( node != null)
    {
        // 存储下一个node.next元素值,保证可以链接到下一个
        const next = node.next;
        // 将next值指向上一个元素,即可完成反转
        node.next = tmp;
        // 反转元素要下到正向链表的元素地址去
        tmp = node;
        // 正向链表到下一个元素地址
        node = next;
    }
    return tmp;
};

 

上一篇:Redis 到底是怎么实现“附近的人”这个功能的呢?


下一篇:【论文阅读】A Wearable Head Mounted Display Bio-Signals Pad System for Emotion Recognition