码迷,mamicode.com
首页 > 编程语言 > 详细

算法:链表反转

时间:2018-04-22 16:07:43      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:value   reac   als   数组   public   实现   cti   简介   while   

在面试百度实习生的 时候遇到了这个问题,不是太难,当时只给面试官叙述了一下思路,后来想起这个问题还是决定手撸一遍,要不然总数眼高手低,昨天连快排都撸不出来了。。。

题目简介:没什么可以过多介绍的,就是实现一个链表的反转

<?php

class Node
{
  public $value;
  public $next = null;

  public function __construct($data) {
    $this->value = $data;
  }
}

/**
 * 构建链表
 * @param $vals array 链表值的数组
 * @return Node
 */
function genLinkList($vals) {
  $headVal = array_shift($vals);
  $head = new Node($headVal);
  $p = $head;
  foreach ($vals as $val) {
    $p->next = new Node($val);
    $p = $p->next;
  }
  return $head;
}

/**
 * 反转链表
 * @param $head Node 链表头结点
 * @return Node 反转后的链表头结点
 */
function revLinkList($head) {
  $h = $head;
  if (!$h->next) {
    return $head;
  }
  $n = $h->next;
  while ($n) {
    $nn = $n->next;
    $n->next = $h;
    $h = $n;
    $n = $nn;
  }
  $head->next = null;
  return $h;
}

$data = [1, 2, 3, 4, 5, 6, 7];

$linkList = genLinkList($data);

print_r($linkList);

$linkListRev = revLinkList($linkList);

print_r($linkListRev);

算法:链表反转

标签:value   reac   als   数组   public   实现   cti   简介   while   

原文地址:https://www.cnblogs.com/wxjblog/p/8907334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!