前几个小时,我写了一篇关于链表的删除插入操作和链表求长度,并指明了pre的初始化
void deleteList(Node *L, int i) { Node *pre = L, *r; int k = 0; while(pre->next != NULL && k < i-1)//找出i-1的位置 { pre = pre->next; k ++; } if(!(pre->next)) //判断i是不是太大了,pre->next为空 { printf("插入的节点有误 ", k); return 0; } r = pre->next; pre->next = r->next; free(r); }
删除算法中的循环条件(pre->next != NULL && k < i-1)与前面的算法的循环条件(pre != NULL && k < i -1)不同,
因为前插时的插入位置有m+1个位置。i = m+1是指在第 m+1 个位置前插入,即在单链表的末尾插入。而删除操作中删除的
合法位置只有m个。