1. 程式人生 > >算法:鏈表反轉

算法:鏈表反轉

數組 linklist AR 表頭 null 。。 foreach clas 過多

在面試百度實習生的 時候遇到了這個問題,不是太難,當時只給面試官敘述了一下思路,後來想起這個問題還是決定手擼一遍,要不然總數眼高手低,昨天連快排都擼不出來了。。。

題目簡介:沒什麽可以過多介紹的,就是實現一個鏈表的反轉

<?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);

算法:鏈表反轉