早教吧作业答案频道 -->其他-->
已知两个顺序表A和B分别表示两个集合,其元素递增排列,编写一个函数求出A和B的交集C,要求C同样以元素递增的顺序表形式存储
题目详情
已知两个顺序表A和B分别表示两个集合,其元素递增排列,编写一个函数求出A和B的交集C,要求C同样以元素递增的顺序表形式存储
▼优质解答
答案和解析
typedef struct link {
int data;
struct link *next ;
} LINK ;
LINK * your_func( LINK *A , LINK *B ) //设A、B是带头结点的顺序表
{
LINK *pa=A->next , *pb=B->next ,*pc=NULL , *pcH,*p;
//先创建表头
pcH=pc=new LINK ;
pc->next=NULL ;
while ( pa && pb ) //有一个结束,循环就结束
{
while( pa->data < pb->data )
{
pa=pa->next ; //pa 向 pb 靠拢
if ( !pa )
return pcH; //到pa的尾,结束
} //此时,pa的数据>=pb
while( pb->data < pa->data )
{
pb=pb->next ; //pb 向 pa 靠拢
if ( !pb )
return pcH; //到pa的尾,结束
}//此时,pb的数据>=pa
if ( pb->data == pa->data )
{
p = new LINK ;
p->data=pa->data;
p->next=NULL;
pc->next=p;
pc = p;
pa=pa->next;
pb=pb->next;
}
}
return pcH ;
}
int data;
struct link *next ;
} LINK ;
LINK * your_func( LINK *A , LINK *B ) //设A、B是带头结点的顺序表
{
LINK *pa=A->next , *pb=B->next ,*pc=NULL , *pcH,*p;
//先创建表头
pcH=pc=new LINK ;
pc->next=NULL ;
while ( pa && pb ) //有一个结束,循环就结束
{
while( pa->data < pb->data )
{
pa=pa->next ; //pa 向 pb 靠拢
if ( !pa )
return pcH; //到pa的尾,结束
} //此时,pa的数据>=pb
while( pb->data < pa->data )
{
pb=pb->next ; //pb 向 pa 靠拢
if ( !pb )
return pcH; //到pa的尾,结束
}//此时,pb的数据>=pa
if ( pb->data == pa->data )
{
p = new LINK ;
p->data=pa->data;
p->next=NULL;
pc->next=p;
pc = p;
pa=pa->next;
pb=pb->next;
}
}
return pcH ;
}
看了 已知两个顺序表A和B分别表示...的网友还看了以下:
用a,b,c表示一个等边三角形围绕它的中心在同一平面内所作的旋转运动,a表示顺时针旋转240°b表 2020-04-10 …
对线性表进行二分法查找,其前提条件是A.线性表以顺序方式存储,并且按关键码值排好序B.线性表以顺 2020-05-23 …
对线性表进行二分法查找,其前提条件是A.线性表以顺序方式存储,并已按关键码值排好序B.线性表以顺 2020-05-23 …
符合以下________条件的,可以用二分法查找。A.线性表以顺序方式存储,并已按关键码值排好序B. 2020-05-24 …
对线性表进行二分法查找,其前提条件是()。A.线性表以顺序方式存储,并已按关键码值排好序B.线性表 2020-05-24 …
对线性表进行二分法查找,其前提条件是A.线性表以顺序方式存储,并已按关键码值排序好B.线性表以顺 2020-05-24 …
线性表进行二分法查找的前提是( )。A)线性表以顺序方式存储,并已按关键码值排好B)线性表以顺序方 2020-05-24 …
athirdtime指再次,又一次,不表示顺序.thethirdtime第三次,强调顺序.因为at 2020-06-08 …
图中表示将线段AB()A.以A点为定点顺时针旋转90度B.以A点为定点逆时针旋转90度C.以B点为 2020-07-31 …
读图,若该图表示热力环流示意图,则()A.a、b、c、d四地的气压由大小的顺序是a>b>c>dB.a 2020-12-05 …