主题:[讨论]请大家帮帮忙,对于课本上的线性表删除操作的算法不理解!
这是关于线性表的删除操作,课本上的算法为:
Status listdelete_ sq(sqlist &l,int i,elemtype &e) {
if((i<1)||(i>l.length)) return error;
p=&(l.elem[i-1]);
e=*p;
q=l.elem+l.length-1;(表尾元素的位置)
for (++p;p<=q;++p) *(p-1)=*p;
--l.length;
return ok;
}
问题就是为什么其中的q表示“表尾元素的位置”??其中的l.elem到底代表的是哪一个元素??
Status listdelete_ sq(sqlist &l,int i,elemtype &e) {
if((i<1)||(i>l.length)) return error;
p=&(l.elem[i-1]);
e=*p;
q=l.elem+l.length-1;(表尾元素的位置)
for (++p;p<=q;++p) *(p-1)=*p;
--l.length;
return ok;
}
问题就是为什么其中的q表示“表尾元素的位置”??其中的l.elem到底代表的是哪一个元素??