#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以后的位置,就不应该合并了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 我要一个分身加定位两个功能的安卓app
- ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
- ¥15 IAR程序莫名变量多重定义
- ¥15 (标签-UDP|关键词-client)
- ¥15 关于库卡officelite无法与虚拟机通讯的问题
- ¥15 目标检测项目无法读取视频
- ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
- ¥100 求采集电商背景音乐的方法
- ¥15 数学建模竞赛求指导帮助
- ¥15 STM32控制MAX7219问题求解答