#include<stdio.h>
#define MAXSIZE 100
typedef struct SeqList//顺序表的存储结构
{
int elem[MAXSIZE];
int length;
}SqList;
void MergeList_Sq(SqList LA,SqList LB,SqList &LC)
{
int *p1,*p2,*q;
LC.length=LA.length+LB.length;
p1=LA.elem;
p2=LB.elem;
q=LC.elem;
while(p1&&p2)
{
if(*p1<=*p2)
{
*q=*p1;
p1++;
}
else
{
*q=*p2;
p2++;
}
q++;
}
while(p1)
{
*q=*p1;
p1++;
q++;
}
while(p2)
{
*q=*p2;
p2++;
q++;
}
}
int Input(SqList &L,int n)
{
if(n<1||n>MAXSIZE)
return 0;
int i;
L.length=0;
for(i=0;i<n;i++)
{
printf("请输入第%d个元素:",i+1);
scanf("%d",&L.elem[i]);
L.length++;
}
return 1;
}
int Show(SqList &L)
{
int i;
for(i=0;i<L.length;i++)//注意不要写i<n,表长是不断变化的,不总是等于n
printf("%d ",L.elem[i]);
return 1;
}
int main()
{
SqList LA,LB,LC;
int m,n;
printf("请输入LA元素个数:");
scanf("%d",&m);
Input(LA,m);
printf("顺序有序表LA为:\n");
Show(LA);
printf("\n");
printf("请输入LB元素个数:");
scanf("%d",&n);
Input(LB,n);
printf("顺序有序表LB为:\n");
Show(LB);
printf("\n");
printf("合并后的顺序有序表LC为:\n");
MergeList_Sq(LA,LB,LC);
Show(LC);
return 0;
}
想实现顺序有序表的合并(c实现),能否看下逻辑错误不
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-link 2021-10-06 20:42关注
合并函数有问题。p1&&p2是错误的。必须要考虑length的问题。如果p1移动到length及length以后的位置,就不应该合并了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
- ¥15 这种微信登录授权 谁可以做啊
- ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
- ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
- ¥15 网络设备配置与管理这个该怎么弄
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!