|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
这样做可以提高代码的可读性和简洁性。
|
|