1.2_线性表之链式存储

目录

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 按值查找

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值