【数据结构c语言版严蔚敏】的问题: 两个有序线性表的交集合并成一个新有序线性表,求新有序线性表算法? 10

完整题目如下:假设有两个按元素之递增有序排列的线性表A和B分别表示两个集合(同一表中的元素各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中... 完整题目如下:
假设有两个按元素之递增有序排列的线性表A和B分别表示两个集合(同一表中的元素各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。

注意:此题未数据结构题,类C算法,求高手!
展开
 我来答
习惯一个人007
推荐于2017-12-15
知道答主
回答量:2
采纳率:100%
帮助的人:2960
展开全部
菜鸟路过。。。
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0

typedef struct
{
int *elem;
int length;
int listsize;
} SqList;

int InitList_Sq(SqList *L,int len)
{
//构造一个空的线性表L,该线性表预定义大小为len
L->elem=(int *)malloc(sizeof(int)*len);
if(!L->elem) return ERROR;
L->length=0;
L->listsize=len;
return OK;
}

int Load_Sq(SqList *L)
{
// 输出顺序表中的所有元素
int i;
if(L->length==0) printf("The List is empty!");
else
{
for(i=0;i<L->length;i++) printf("%d ",L->elem[i]);
}
printf("\n");
return OK;
}

int Merg(SqList *LA,SqList *LB,SqList *LC)
{
int i,j,k;
i=j=k=0;
while(i<LA->length&&j<LB->length)
{
if(LA->elem[i]<LB->elem[j])
{
LC->elem[k]=LA->elem[i];
LC->length++;
k++;
i++;
}
else
{
LC->elem[k]=LB->elem[j];
LC->length++;
k++;
j++;
}
}
while(i<LA->length)
{
LC->elem[k]=LA->elem[i];
LC->length++;
k++;
i++;
}
while(j<LB->length)
{
LC->elem[k]=LB->elem[j];
LC->length++;
k++;
j++;
}
return OK;
}

int Free_Sq(SqList *L)
{
free(L->elem);
L->elem=NULL;
return OK;
}
int main()
{
SqList *LA,*LB,*LC;
int a_len,b_len,i;
scanf("%d",&a_len);
LA=(SqList*)malloc(sizeof(SqList));
LB=(SqList*)malloc(sizeof(SqList));
LC=(SqList*)malloc(sizeof(SqList));
InitList_Sq(LA,a_len);
for(i=0;i<a_len;i++)
{
scanf("%d",&LA->elem[i]);
LA->length++;
}
scanf("%d",&b_len);
InitList_Sq(LB,b_len);
for(i=0;i<b_len;i++)
{
scanf("%d",&LB->elem[i]);
LB->length++;
}
InitList_Sq(LC,a_len+b_len);
Merg(LA,LB,LC);
printf("List A:");
Load_Sq(LA);
printf("List B:");
Load_Sq(LB);
printf("List C:");
Load_Sq(LC);
Free_Sq(LA);
Free_Sq(LB);
Free_Sq(LC);
free(LA);
free(LB);
free(LC);
return 0;
}
匿名用户
2012-12-10
展开全部
你可以先设一个线性表C,再比较A和B中第一个元素谁小的放到C中,如果是A中的小,A取后一个元素和B中第一个元素比较,元素小的放到C中,依次类推。
追问
这个思路我也有,但是类C不太会写。。。求完整类C算法,谢了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
283802332
2012-12-10 · TA获得超过3311个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:178万
展开全部
留下邮箱,我把源文件文件发给你
更多追问追答
追问
282655008@qq.com
谢谢了!
追答
已发送,请查收
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式