3.4 给定两个已排序的表L1和L2,只使用基本的表操作编写计算L1∩L2的过程
List Intersection( List L1, List L2 )
{
List L;
Position p1, p2;
L = ( Position )malloc( sizeof( struct Node ));
L->next = NULL;
p1 = L1->next;
p2 = L2->next;
while ( p1 != NULL && p2 != NULL )
{
if ( p1->x < p2->x )
{
p1 = p1->next;
}
else if ( p1->x > p2->x )
{
p2 = p2->next;
}
else
{
Insert( p1->x, L, L );
p1 = p1->next;
p2 = p2->next;
}
}
return L;
}
void Insert( ElementType x, List L, Position P )
{
Position tmpCell;
tmpCell = ( Position )malloc( sizeof( struct Node ));
tmpCell->x = x;
tmpCell->next = P->next;
P->next = tmpCell;
}