
数据结构——链表有关
在索引 在其他索引处插入: 在索引 在其他索引处删除节点:
发布日期:2021-05-18 05:20:10
浏览次数:18
分类:精选文章
本文共 2477 字,大约阅读时间需要 8 分钟。
Java LinkedList 类详细文档
类结构与定义
com.mjLinkedList
类扩展自 AbstractList
,并采用链表(Linked List)的数据结构。它的核心结构由 Node
内部类构成,实现了一系列常见的链表操作,包括添加、删除、查找、排序等。
Node 内部类
Node
是 LinkedList
的内部类,定义了链表的节点结构。一个节点包含两个关键属性:
- element:节点存储的数据元素。
- next:指向下一个节点。
节点的创建和连接方式如下:
public Node(E element, Nodenext) { this.element = element; this.next = next;}
基本操作 - clear()
clear()
方法用于清除链表中的所有节点。具体实现如下:
public void clear() { size = 0; first = null;}
操作结果
- 链表所有节点被移除,
first
指针指向null
。 - 链表长度
size
设为0
。
基础操作 - get(int index)
get(int index)
方法用于根据给定索引获取链表中对应位置的元素。需要注意的是,该方法不会修改链表结构,只是返回对应节点的数据:
public E get(int index) { return node(index).element;}
参数说明
index
:整数参数,表示要访问的节点位置(从0
开始计数)。
基础操作 - set(int index, E element)
set(int index, E element)
方法用于修改链表中指定位置的元素。具体实现如下:
public E set(int index, E element) { Nodenode = node(index); E old = node.element; node.element = element; return old;}
参数说明
index
:目标节点的位置索引。element
:要设置到目标节点中的新数据元素。
添加操作 - add(int index, E element)
add(int index, E element)
方法用于在指定位置插入元素。链表支持两种情况:
0
处插入。public void add(int index, E element) { if (index == 0) { first = new Node<>(element, first); } else { Nodeprev = node(index - 1); prev.next = new Node<>(element, prev.next); } size++;}
参数说明
index
:要插入的位置索引。element
:要插入到链表中的数据元素。
删除操作 - remove(int index)
remove(int index)
方法用于删除链表中指定位置的节点。根据索引分为两种情况:
0
处删除节点。public E remove(int index) { Nodenode = first; if (index == 0) { first = first.next; } else { Node prev = node(index - 1); node = prev.next; prev.next = node.next; } size--; return node.element;}
参数说明
index
:要删除的位置索引。
查找操作 - indexOf(E element)
indexOf(E element)
方法用于查找链表中第一个具有该元素的节点。注意,该方法已实现,但默认返回 0
:
public int indexOf(E element) { return 0;}
参数说明
element
:要查找的数据元素。
获取节点的方法 - node(int index)
node(int index)
辅助方法用于根据索引返回对应节点对象。这方法包括了索引的范围检查,确保格式正确:
private Nodenode(int index) { rangeCheck(index); Node node = first; for (int i = 0; i < index; i++) { node = node.next; } return node;}
参数说明
index
:要获取的节点的位置索引。
范围检查方法 - rangeCheck(int index)
辅助方法 rangeCheck(int index)
用于检查索引是否超出链表有效范围:
private void rangeCheck(int index) { if (index < 0 || index >= size) { throw new IllegalArgumentException("Index out of bounds: index = " + index); }}
总结
本文详细介绍了 com.mjLinkedList
类的结构与实现,涵盖了链表的基本操作和相关辅助方法。通过合理运用这些方法,可以实现链表的灵活数据存储与管理。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月24日 20时18分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ASP.NET MVC Action Filters
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
04_Mysql配置文件(重要参数)
2019-03-06
JavaSE总结
2019-03-06
Python IO编程
2019-03-06
CSS入门总结
2019-03-06
使用 TortoiseGit 时,报 Access denied 错误
2019-03-06
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06
django-表单之模型表单渲染(六)
2019-03-06
c++之程序流程控制
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
有道云笔记 同步到我的博客园
2019-03-06
李笑来必读书籍整理
2019-03-06
Hadoop(十六)之使用Combiner优化MapReduce
2019-03-06
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
andriod 开发错误记录
2019-03-07