主题:[讨论]顺序表的插入算法讨论
[size=3][color=FF0000]这是顺序表的存储结构[/color][/size]typedef struct Seq{
ElemType *elem;
int length;
int ListSize;
}SeqList;
[size=4]这是我的插入操作,其中为红线的部分为什么不能换成我那种的移动方式?[/size]void InsertSeqList(SeqList *L,int i,ElemType m)
{
//检查插入位置的合理性以及顺序表是否已经满了
FullSeqList(&L);
// 上面语句检查是否满了
if(i<1||i>L->legth+2)
printf("不能插入!!检查位置的合理性!");
else
{
int j;
//先腾出i位置,然后插入m
//先移动
[size=6]//for(j=i;j<L->legth+1;j++)?难道不能从前向后循环?
for(j=L->length-1;j>i-1;j--) [/size] L->elem[j+1]=L->elem[j];
}
//插入元素,改变长度
L->elem[i-1]=m;
L->legth++;
}
ElemType *elem;
int length;
int ListSize;
}SeqList;
[size=4]这是我的插入操作,其中为红线的部分为什么不能换成我那种的移动方式?[/size]void InsertSeqList(SeqList *L,int i,ElemType m)
{
//检查插入位置的合理性以及顺序表是否已经满了
FullSeqList(&L);
// 上面语句检查是否满了
if(i<1||i>L->legth+2)
printf("不能插入!!检查位置的合理性!");
else
{
int j;
//先腾出i位置,然后插入m
//先移动
[size=6]//for(j=i;j<L->legth+1;j++)?难道不能从前向后循环?
for(j=L->length-1;j>i-1;j--) [/size] L->elem[j+1]=L->elem[j];
}
//插入元素,改变长度
L->elem[i-1]=m;
L->legth++;
}