思路:
实例化出两个链表($link_a, $link_b),比较连个链表当前元素的大小,谁小谁执行next()方法继续比较,当出现相当的时候把相等的值塞入数组$common里,当两个链表有一个元素比较完了,全部结束。
<?php
$link_a = new SplDoublyLinkedList();
$link_b = new SplDoublyLinkedList();
push_value($link_a, [1, 7, 8, 14]);
push_value($link_b, [2, 3, 7, 9, 14, 26]);
$link_a->rewind();
$link_b->rewind();
$common = array();
while ($link_a->current() != null && $link_b->current() != null) {
$link_a_current = $link_a->current();
$link_b_current = $link_b->current();
if ($link_a_current > $link_b_current) {
$link_b->next();
} else if ($link_b_current > $link_a_current) {
$link_a->next();
} else {
$link_a->next();
$link_b->next();
array_push($common, $link_a_current);
}
}
function push_value($link, array $value_array)
{
foreach ($value_array as $key => $value) {
$link->push($value);
}
}
var_dump($common);