Java单链表、双端链表、有序链表实现
来源:互联网 发布:英伟达优化软件 编辑:程序博客网 时间:2024/06/05 14:41
单链表:
insertFirst:在表头插入一个新的链接点,时间复杂度为O(1)
deleteFirst:删除表头的链接点,时间复杂度为O(1)
有了这两个方法,就可以用单链表来实现一个栈了,见http://blog.csdn.net/a19881029/article/details/22579759
find:查找包含指定关键字的链接点,由于需要遍历查找,平均需要查找N/2次,即O(N)
remove:删除包含指定关键字的链接点,由于需要遍历查找,平均需要查找N/2次,即O(N)
双端链表(不是双向链表):
与单向链表的不同之处在保存有对最后一个链接点的引用(last)
insertFirst:在表头插入一个新的链接点,时间复杂度O(1)
insertLast:在表尾插入一个新的链接点,时间复杂度O(1)
deleteFirst:删除表头的链接点,时间复杂度O(1)
deleteLast::删除表尾的链接点,由于只保存了表尾的链接点,而没有保存表尾的前一个链接点(这里就体现出双向链表的优势了),所以在删除表尾链接点时需要遍历以找到表尾链接点的前一个链接点,需查找N-1次,也就是O(N)
有了这几个方法就可以用双端链表来实现一个队列了,http://blog.csdn.net/a19881029/article/details/22654121
有序链表:链表中的数据按从小到大排列
表的插入和删除平均需要比较N/2次,即O(N),但是获取最小数据项只需O(1),因为其始终处于表头,对频繁操作最小数据项的应用,可以考虑使用有序链表实现,如:优先级队列
和数组相比,链表的优势在于长度不受限制,并且在进行插入和删除操作时,不需要移动数据项,故尽管某些操作的时间复杂度与数组想同,实际效率上还是比数组要高很多
劣势在于随机访问,无法像数组那样直接通过下标找到特定的数据项
- Java单链表、双端链表、有序链表实现
- Java单链表、双端链表、有序链表实现
- Java单链表、双端链表、有序链表实现
- Java单链表、双端链表、有序链表实现原理
- Java 实现有序链表
- Java实现有序单向链表
- java实现有序线性表
- java有序链表
- java实现链,链栈,有序表和双链表(转)
- Java语言实现两个有序链表的合并
- Java实现两个有序链表的合并
- java基于有序链表的优先级队列实现
- 合并两个有序链表(Java递归实现)
- java实现有序数组
- 【数据结构】单链表,双端链表,有序链表
- Java有序数组的实现
- 用javascript实现的有序链表
- 有序的双向链表实现
- 常用的距离测度
- Mybatis 报错:java.lang.NoSuchMethodException: java.lang.Long.<init>()
- MySQL 批量更新数据
- QA问答系统中的深度学习技术实现
- 第十二周【项目一-Prim算法的验证】
- Java单链表、双端链表、有序链表实现
- 第12周项目5-拓扑排序算法验证
- Android开发,so文件报错 No implementation found for XXX
- Opencv之鼠标响应setMouseCallback()的用法
- Matlab连接数据库ACCESS数据库
- SQLServer两张表筛选相同数据和不同数据
- JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
- 【移动】使用输入法的"搜索"按钮
- WebSocket协议实时通信技术原理