题目:给定两个已经排序的表L1和L2,只使用基本的表的操作编写计算L1∪L2的过程
思路:可以从L1∩L2中受到启发,不同的是,都要加进去,但是,是去除重复么?
答案是比较巧妙的,和求交集是基本一致的,通过比较两个数的大小,如果相等就直接加入数组中,不然就一直输出小的那一组,并把小的元素,加入到最后的result中
3.5public static <AnyType extends Comparable<? super AnyType>> void union(List<AnyType> L1, List<AnyType> L2,
List<AnyType> Result)
{
ListIterator<AnyType> iterL1 = L1.listIterator(); ListIterator<AnyType> iterL2 = L2.listIterator();
AnyType itemL1=null, itemL2=null;
// get first item in each list
if ( iterL1.hasNext() && iterL2.hasNext() )
{
itemL1 = iterL1.next(); itemL2 = iterL2.next();
}
while ( itemL1 != null && itemL2 != null )
{
int compareResult = itemL1.compareTo(itemL2);
if ( compareResult == 0 )
{
Result.add(itemL1);
itemL1 = iterL1.hasNext()?iterL1.next():null; itemL2 = iterL2.hasNext()?iterL2.next():null;
}
else if ( compareResult < 0 )
{
Result.add(itemL1);
itemL1 = iterL1.hasNext()?iterL1.next():null;
}
else
{
Result.add(itemL2);
itemL2 = iterL2.hasNext()?iterL2.next():null;
}
}
}