| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
严书中带头结点单链表删除第i个数据元素 
- Status ListDelete(LinkList &L, int i, ElemType &e)
 
 - {
 
 -   int j = 0;
 
 -   LinkList q, p = L;
 
 -   while (p->next && j < i - 1)
 
 -   {
 
 -     j++;
 
 -     p = p->next;
 
 -   }
 
 -   if (!p->next || j > i - 1)
 
 -     return ERROR;
 
 -   q = p->next;
 
 -   p->next = q->next;
 
 -   e = q->data;
 
 -   free(q);
 
 -   return OK;
 
 - }
 
  复制代码 
if语句中的j > i - 1可以省略吗?
可以省略。在给定的代码中,这个if语句的作用是检查是否找到了第i个数据元素。如果没有找到或者j大于i-1,说明链表中没有第i个元素,此时应该返回错误。但是实际上,在while循环中,j是从0开始递增的,当循环结束时,j的值就是i-1。所以,如果循环结束时j的值大于i-1,那么一定是链表中没有第i个元素。因此,可以省略这个if语句中的j > i - 1条件判断,直接返回错误即可。简化后的代码如下: 
 
- Status ListDelete(LinkList &L, int i, ElemType &e)
 
 - {
 
 -   int j = 0;
 
 -   LinkList q, p = L;
 
 -   while (p->next && j < i - 1)
 
 -   {
 
 -     j++;
 
 -     p = p->next;
 
 -   }
 
 -   if (!p->next)
 
 -     return ERROR;
 
 -   q = p->next;
 
 -   p->next = q->next;
 
 -   e = q->data;
 
 -   free(q);
 
 -   return OK;
 
 - }
 
 
  复制代码 
 
这样做可以提高代码的可读性和简洁性。 
 
 
 |   
 
 
 
 |