数据结构与算法|链表

一:链表基础知识

1.基础知识

2.代码实现

2.1单链表

类定义链表---链表有节点和连接线表示---节点:节点类; 连接线,指针(引用数据,node next)

(1)单链表实现

节点类:

链表类:

链表类与节点类是整体与部分的关系

(2)头插法

head为新节点,新节点的值为value(插入值),节点的引用(第二个属性)为原来的head节点。

(3)链表遍历

方法一:

具体的操作由循环内转移到调用方

(通过Consumer参数)

方法二:

方法三:迭代器

小技巧:类是否能加static限制

(4)尾插法

先要查找到尾部节点--查找节点方法

再尾部添加

(5)get:根据索引获取值

(6)索引位置添加元素

先找到索引减一的节点---创建新节点---新节点对上对下连接

(7)删除节点

删除头节点

先找到i-1个节点(pre)

pre的next指向第i个节点的next

2.2带哨兵的单链表

上述方法对于空链表需要特殊处理,添加哨兵节点,链表非空,找上一个节点都可以找到

头指针head不指向第一个元素,而是指向哨兵

(1)链表构造

头指针指向null,链表为空

带哨兵,头指针指向一个节点,节点值随意,节点next开始为null,没有任何数据

(2)功能

可以全部删除,链表为空(head=null)的判断

2.3带哨兵的双向链表

单链表:一个指针,指向后节点;一个head指向一个哨兵

双向链表:两个指针,指向后节点,前节点;一个head,一个tail指向2个哨兵

(1)链表实现
(2)根据索引查找节点

最后一个数据节点指向尾节点tail

(3)增删

新增:修改4个指针

删除:修改2个指针

哨兵节点也删掉了,空链表不能再删了

2.4循环链表(环形链表)

双向链表:两边是开的

循环链表:两边是闭合的

单向循环链表:只有一个next指针,没有pre指针

(1)链表实现

节点类:前后两个指针

二:练习题目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值