交集的部分。这里利用已经排好序的这个条件来适当的减少时间复杂度
static void CommonData(List head1, List head2)
{
Position position1 = head1;
Position position2 = head2;
while(position1!=NULL){
while(position2!=NULL){
if(position1->element == position2->element){
printf("position1->element is %d\n", position1->element);
}else if(position1->element < position2->element){
break;
}
position2 = position2->Next;
}
position1 = position1->Next;
}
return;
}
执行的结果如下:
element is 0
element is 1
element is 2
element is 3
element is 4
element is 6
element is 0
element is 2
element is 4
element is 6
element is 9
element is 10
position1->element is 0
position1->element is 2
position1->element is 4
position1->element is 6
求并集,只是并集并没有以排好序的方式输出。
static void CommonDataForAll(List head1, List head2)
{
Position position1 = head1;
Position position2 = head2;
while(position1!=NULL){
while(position2!=NULL){
if(position1->element <= position2->element){
break;
}
position2 = position2->Next;
}
if(position1->element != position2->element){
printf("head->element is %d\n", position1->element);
}
position1 = position1->Next;
}
printf("end");
return;
}
static void AllData(List head)
{
while(head!=NULL){
printf("head->element is %d\n", head->element);
head = head->Next;
}
}
AllData(head2);
CommonDataForAll(head1, head2);
输出结果如下:
element is 0
element is 1
element is 2
element is 3
element is 4
element is 6
element is 0
element is 2
element is 4
element is 6
element is 9
element is 10
head->element is 0
head->element is 2
head->element is 4
head->element is 6
head->element is 9
head->element is 10
head->element is 1
head->element is 3