- implode: documentation ( source)
<?php
class Node {
public $val;
public $next;
public function __construct($val, $next) {
$this->val = $val;
$this->next = $next;
}
public function __toString() {
$a = [];
$c = $this;
while ($c != null) {
$a[] = $c->val;
$c = $c->next;
}
return implode(", ", $a)."\n";
}
public static function reverse($list) {
$newl = null;
$curr = $list;
while ($curr != null) {
$next = $curr->next;
$curr->next = $newl;
$newl = $curr;
$curr = $next;
}
return $newl;
}
public static function reverseRecursively($list) {
if ($list == null || $list->next == null) {
return $list;
}
$next = $list->next;
$list->next = null;
$next = self::reverseRecursively($next);
$next->next = $list;
return $next;
}
}
$list = new Node(1, new Node(2, new Node(3, new Node(4, new Node(5, null)))));
echo $list;
$list = Node::reverse($list);
echo $list;
$list = Node::reverseRecursively($list);
echo $list;
exit();