中易网

请用算法写出两个有序表合并成一个有序线性表(用C语言

答案:2  悬赏:30  
解决时间 2021-03-24 12:17
设有两个有序线性单链表,头指针分别为AH与BH。试写出将这两个有序线性单链表合并为一个头指针为CH的有序电信单链表的算法。
最佳答案
代码写好了。
经测试vc下通过。
#include

int merge(int *a,int n1,int *b,int n2,int *s)
{
int i=0,j=0,k=0;
while(i {
if(a[i]>b[j]){
if(k&&s[k-1]==b[j])//有重复元素
j++;
else
s[k++]=b[j++];
}
else{
if(k&&s[k-1]==a[i])//有重复元素
i++;
else
s[k++]=a[i++];
}
}
while(i if(k&&s[k-1]==a[i])
i++;
else
s[k++]=a[i++];
}
while(j if(k&&s[k-1]==b[j])//有重复元素
j++;
else
s[k++]=b[j++];
}
return k;
}
int main()
{
int a[100],b[100],s[200],n1,n2,i,n3;
printf("输入第一个数组元素个数:");
scanf("%d",&n1);
printf("输入%d个升序元素(空格隔开):",n1);
for(i=0;i scanf("%d",&a[i]);
printf("输入第二个数组元素个数:");
scanf("%d",&n2);
printf("输入%d个升序元素(空格隔开):",n2);
for(i=0;i scanf("%d",&b[i]);
n3=merge(a,n1,b,n2,s); //a和b数组的元素合并到s数组里去(并消除重复元素),并返回合并后数组的元素个数
printf("合并后元素数组为:");
for(i=0;i printf("%d ",s[i]);
printf("\n");
return 0;
}
附测试数据一组:
5
3 50 50 100 100
3
8 50 80
输出为:3 8 50 80 100
全部回答
#include "stdio.h" main() { int a,b,c,i,j,k,low,high,mid; int la[50]; int lb[50]; int lc[50]; printf("Please input the width of la,lb,lc:\n"); printf("Input here:"); scanf("%d,%d,%d",&a,&b,&c); printf("a=%d,b=%d,c=%d\n",a,b,c); if (a+b>c) printf("lc overflow,operation halt!\n"); else { printf("Input la:"); for(i=1;i<=a;++i) { scanf("%d",&la[i]); la[0]=la[i]; low=1; high=i; while(low<=high) { mid=(low+high)/2; if(la[0]=low;j--) la[j+1]=la[j]; la[low]=la[0]; } printf("\n"); printf("Input lb:"); for(i=1;i<=b;++i) { scanf("%d",&lb[i]); lb[0]=lb[i]; low=1; high=i; while(low<=high) { mid=(low+high)/2; if(lb[0]=low;j--) lb[j+1]=lb[j]; lb[low]=lb[0]; } printf("\n"); printf("la is:"); for (i=1;i<=a;i++) printf("%d ",la[i]); printf("\n"); printf("lb is:"); for (j=1;j<=b;j++) printf("%d ",lb[j]); i=1;j=1;k=0; while (i<=a && j<=b) if (la[i]>lb[j]) { lc[k]=lb[j];k++;j++;} else { lc[k]=la[i];k++;i++;} while (i<=a) {lc[k]=la[i];k++;i++;} while (j<=b) {lc[k]=lb[j];k++;j++;} printf("\n"); printf("lc is:"); for (i=0;i } getch(); } 把la,lb,lc分别换一下就OK了 希望采纳
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
现在怎样才能去当尼姑,我想出家
换了新氧传感器过了段时间油耗又高了
富士康发工资是代理给银行发的吗?
爱他美奶粉最新事件大家有听说过吗?好多奶粉
孕4周 小腹坠涨 流褐色分泌物 是什么情况啊
我想在顺义城区租房,希望到北京市区方便的,
求从哈尔滨到山东文登的航班和价位及文登附近
关于TD-LTE,FDD-LTE(仅国际漫游时支持)
飞机与地球自转问题?
新华村镇银行(翠竹支行)地址在什么地方,想过
番禺舞蹈高手
有什么搞笑加恐怖的电影!
吃幼笋对人体有什么好处吗?
西南交通大学新校区(犀浦校区)到西华门街17
武汉周边有没有比较好的养老院?
推荐资讯
每小时/5公里 的步行 坚持2小时算是有氧运动
育才小学四年级举行数学竞赛 共20道题做对一
免费师范生如果退还学费能不服从分配吗?
卡地亚手表坏了去哪里维修好
安庆dna亲子鉴定需要什么东西
外省考生考阳江大学需要多少分?
我们都想要牵了手就能结婚的爱情, 却活在一
有时候睡觉过一会突然身体动不了,意识还是有
计划生育假工资如何发放
《朝花夕拾呐喊》我的收获
四川渠县万兴广场有哪些宠物店
Time有一个吹口哨版本 谁能告诉我名字是什么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?