回 帖 发 新 帖 刷新版面

主题:[讨论]请大家帮帮忙,对于课本上的线性表删除操作的算法不理解!

这是关于线性表的删除操作,课本上的算法为:
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到底代表的是哪一个元素??

回复列表 (共1个回复)

沙发

q=l.elem+l.length-1;(表尾元素的位置)
其中l.elem应该代表线性表开始位置,q是个指针,加0是本身位置,加1是第二个位置,所以得到结论.

我来回复

您尚未登录,请登录后再回复。点此登录或注册