数据结构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

4.这样子排除的情况中:1.i<1 p不为空而j>i 2.i>l.length p 为空

所以判断为出错的条件为 !p || j>i

你可能感兴趣的:(数据结构1-关于对链表的获取元素算法自己的思考)