链表反转

169 阅读1分钟

写出一个完整的链表反转的程序,总计在10行左右的代码,且链表是通过指针关联的,比较考验思维逻辑能力,所以在面试中是比较高频的面试题。 其核心思想是,将下一个节点指向逻辑头节点之前,最开始链表头节点是逻辑头,当执行完一遍操作后,第二个节点变为逻辑头结点,如此循环到最后。 代码如下:

function reverseList(pHead){
  var head = pHead;
  var currentNode;
  while(pHead&& pHead.next){
    currentNode = pHead.next;
    pHead.next = currrentNode.next;
    currentNode.next = pHead;
    head = currentNode;
  }
  return head;
}

同步git地址:https://github.com/mananl/algorithm 每周会更新3篇左右