大家帮我看一下这个顺序表的插入数据元素的算法是不是有问题?
发布网友
发布时间:2024-10-03 07:04
我来回答
共3个回答
热心网友
时间:2024-10-05 08:56
思路比较清晰。条件判断中有三个
1、<1的位置不存数据这个插入位置不在范围内。
2、>L.lenght+1在表的尾部之后了,超出范围。
3、L.length==maxSize-1,说明表是满的,就没有再插入的可能。(0位置不算表空间)
所以你的说法是正确的。
程序书写太不规范,容易出现理解性错误。
int insert(Sqlist &L,int p,int e)
{
int i;
if(((p<1) || (p>L.length+1)) || (L.length==maxSize-1))// 不在表范围,或满 ,退出
{
return 0;
}
for(i=L.length;i>=p;--i)
{
L.data[i+1]=L.data[i];
}
L.data[p]=e;
++(L.length);
return 1;
}
如果你说的是0位置不存数据也不算表长,表长就要比定义的小1.
if(((p<1) || (p>L.length+1)) || (L.length==maxSize-1))// 不在表范围,或满 ,退出
热心网友
时间:2024-10-05 08:56
原题目是正确的,if后面的3个条件,只要有一个成立就说明插入不成功,return 0;L.length ==maxSize表示你在插入这个元素之前,链表已经达到最大值了,所以你的插入肯定是违法的,肯定不成功,返回0. 如果你改成L.length + 1==maxSize,则表示我插入这个元素以后链表才达到最大值,而这种情况是插入成功的情况,不是插入不成功的情况。if后面要跟着的是插入不成功的情况
热心网友
时间:2024-10-05 09:00
int data[maxsize];
由这个定义可知表的最大长度是maxsize,下表是0~maxsize-1,所以上面是对的。
你犯糊涂了吧