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

  • 相关阅读:
    nodejs发送http请求
    Codeforces Round #655 (Div. 2)
    闇の連鎖 树上LCA + 树上差分
    Tree 换根dp
    「水」悠悠碧波 kmp
    HH的项链
    Educational Codeforces Round 90 (Rated for Div. 2)
    巡逻(论为什么第二次求直径要用dp)
    Codeforces Round #651 (Div. 2)
    Treap板子
  • 原文地址:https://www.cnblogs.com/zcs2020/p/13219613.html
Copyright © 2020-2023  润新知