LinkedList_1.打印两个有序链表的公共部分

思路:
实例化出两个链表($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);
原文地址:https://www.cnblogs.com/wangweiwen/p/6363532.html