回 帖 发 新 帖 刷新版面

主题:严蔚敏数据结构-算法2.8的一个问题,请大家指教下!

这是数据结构课本算法2.8  在单链表中取得第i个数据元素,并将值赋给e
Status GetElem_L(LinkList L, int i, ElemType e) 
  { 
     p=L->next;
     j=1;
     while(!p&&j<i)
     {
       p=p->next;
       ++j;
     }
     if(!p || [color=FF0000]j>i[/color])  return ERROR;
     e=p->data;
     return OK;
  }
    红色字体的“j>i”始终想不明白,这个可以去掉吗?因为在 while(!p&&j<i)中当j=i的时候就应该跳出循环了,所以j根本没有机会大于i的,不知道我理解的哪里出了问题,请大家指教下,谢谢

回复列表 (共2个回复)

沙发


 我自己的理解,不知道对不对。j>i只是保证传入i值的合法性,如果主调函数传入的i不合法的话,就不会进入循环,而是通过该if语句退出函数。

板凳


比如说传入的i是个负数。。。

我来回复

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