#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以后的位置,就不应该合并了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报