数据结构1-关于对链表的获取元素算法自己的思考
本人是个菜鸡,随便写写。
在学习链表的插入算法时,不太明白,于是自己写一下思考过程。
1.前提条件:1.有元素的链表 2.插入的位置i 3.获取的元素
初始化的数据:1.指针p=l->next(指向第一个元素)。2.计数用的变量j=1(记录遍历到第几个元素)
最开始的循环算法:
while ( j < i ) {
p = p->next;
++j;
}
2.关于i的值,有三种情况讨论:1.i<1 2.1<=i<=l.length 3.i>l.length
这样简单的算法对 3中情况的处理结果:1.直接跳过,p指向第一个元素 2.可以找到第i个元素 3.会因为p=NULL而出错。
所以在循环条件中要 加入p!=NULL.
3.条件该如何写呢?如果是 || 那么会因为p!=NULL.一直成立而导致所有的i都会遍历整个链表。
所以条件是 p && j<i
4.这样子排除的情况中:1.i<1 p不为空而j>i 2.i>l.length p 为空
所以判断为出错的条件为 !p || j>i