1.2

    科技2022-08-10  110

    目录

    1. 初始化

    2. 增删 (改)查操作

    2.1 按位序插入

    2.2 指定结点的后插和前插

    2.3 按位序删除

    2.4 删除指定结点

    2.5 按位查找

    2.6 按值查找


     

    1. 初始化

     

    不要因为熟悉而忘记思考为什么!!!!

     L 是一个指向 LNode 型的指针, 更进一步来理解就是声明一个指向单链表第一个结点的指针。

     

     

     

     

    2. 增删 (改)查操作

     

    2.1 按位序插入

     

    改用 for 循环找到第(i-1)个结点 !!!!

     

    细节分析:

    自己在写代码时, 一直在思考这个 j 的作用,开始认为 j 仅作为计数作用,用于遍历多少次来定位到 i-1 个结点。显然,如果能够将 j 的值与结点的位序对应起来,逻辑会很清晰易懂。  此外还在思考, j 的循环跳出条件尤其是 j<i-1 这个条件, 习惯了写 j<i, 导致总认为 j< i-1 别扭,这就是背代码的恶劣后果。但是后面还是细心分析出来了,是指针先往后移再改变的 j 值,所以尽管 j 不符时, 指针已经移动了,所以是 j<i-1. 

    所以核心就是,用逻辑驱动而非记忆!

    注: for 循环和 while 循环要非常熟练,绝大部分两者可以互相转化。

     

     

     

    改正: 方法名应该为 LinkInsert。

     

     

     

    2.2 指定结点的后插和前插

     

     

     

     

     

     

     

    2.3 按位序删除

     

     

     

      // 不带头结点的特殊性在于 L 是指针,和结点是不同类型   //  双链表最后一个结点也存在特殊性   //  i 值合法性判断, 申请内存判断,这些都应该是触发器

     

     

     

    2.4 删除指定结点

     

     

     

    2.5 按位查找

     

    注:带头结点的单链表 ,查找和插入有个很大的不同,查找可以是第0个结点,而插入最多插入到第一个位置成为第一个结点。

     

     

     

     

     

    暴露出了一个问题,只注重了方法内部的逻辑,没有梳理方法外部的“接口”作用

     

     

    2.6 按值查找

     

     

     

    Processed: 0.014, SQL: 8