PAT平台的一道题,有序数组的插入,https://pintia.cn/problem-sets/434/problems/965573204499779584
我的思路是先判断数据是否会溢出,如果会,显示插入失败;
如果不会,则再判断原数组中是否存在数据和要插入的数相等,如果存在,显示插入失败;
如果不存在,则将要插入的数X添加在数组的末尾
然后进入循环
循环内容是将X与相邻的数比较大小,如果X大于相邻的数,则X与相邻的数交换位置;
如果X小于相邻的数,则直接跳出循环,显示插入成功。
思路应该没有问题,因为代码在自己电脑的vscode上运行正确,各种情况都试过一遍。
我的代码是这样的:
bool Insert( List L, ElementType X)
{
bool b = true;
Position i;
ElementType temp;
int cnt = 0;
if((L->Last)+1==MAXSIZE)
b = false;
else{
for(i=(L->Last); i>=0; i--){
if(L->Data[i]==X){
cnt++;
b = false;
break;
}
}
if(cnt==0){
L->Data[(L->Last)+1]=X;
for(i=(L->Last); i>=0; i--){
if (L->Data[i]<X){
temp = L->Data[i];
L->Data[i] = X;
L->Data[i+1] = temp;
}else{
break;
}
}
}
}
return b;
}
但到了PAT上就显示部分答案错误,具体情况是:
1.溢出 正确
2.原数组中存在与要插入的数相等的数据 正确
3.插入最大值 失败
4.插入最小值 失败
萌新,代码应该写得比较烂,大家凑合着看,感激不尽
已解决,是由于输出格式的原因。需要在最后把last的值调整一下