在面試百度實習生的 時候遇到了這個問題,不是太難,當時只給面試官敘述了一下思路,後來想起這個問題仍是決定手擼一遍,要否則總數眼高手低,昨天連快排都擼不出來了。。。php
題目簡介:沒什麼能夠過多介紹的,就是實現一個鏈表的反轉面試
<?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);