package javacore; /** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年9月7日 下午12:31:13 des: */ public class LinkedList<E> { public static class Node<E> { public E obj; public Node<E> prev = null; public Node<E> next = null; Node(Node<E> prev, E element, Node<E> next) { this.obj = element; this.next = next; this.prev = prev; } } transient int size = 0; transient Node<E> first; transient Node<E> last; public void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null); last = newNode; if (l == null) first = newNode; else l.next = newNode; size++; } E unlink(Node<E> x) { final E element = x.obj; final Node<E> next = x.next; final Node<E> prev = x.prev; if (prev == null) { first = next; } else { prev.next = next; x.prev = null; } if (next == null) { last = prev; } else { next.prev = prev; x.next = null; } x.obj = null; size--; return element; } public boolean add(E e) { linkLast(e); return true; } public boolean remove(E e) { if (e == null) { for (Node<E> x = first; x != null; x = x.next) { if (x.obj == null) { unlink(x); return true; } } } else { for (Node<E> x = first; x != null; x = x.next) { if (e.equals(x.obj)) { unlink(x); return true; } } } return false; } public E getFirst() { return first.obj; } public E getLast() { return last.obj; } public static void main(String[] args) { LinkedList ll = new LinkedList<>(); ll.add(1); ll.add(2); System.out.println(ll.getFirst() + " --- " + ll.getLast()); ll.remove(2); System.out.println(ll.getFirst() + " --- " + ll.getLast()); } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
《深入解析Android应用源码:仿QQ分组列表修改版》 在移动开发领域,Android作为全球最受欢迎的智能手机操作系统之一,其应用开发的学习与实践至关重要。本资源“Android应用源码仿QQ分组列表修改版”提供了一次...
该压缩包文件“基于java的开发源码-仿千千静听音乐播放器源代码.zip”包含了一款基于Java编程语言开发的音乐播放器的源代码。这个项目旨在模仿知名的千千静听音乐播放器的功能和用户体验,为学习Java编程和软件开发...
再者,为了实现动态加载和分页显示,源码中可能会用到Java的集合框架,如ArrayList、LinkedList、HashMap等,以及流(Stream) API进行数据处理。同时,考虑到性能和用户体验,可能还会涉及到缓存技术,如Redis,用来...
本篇将详细讲解如何使用提供的"Android 仿QQ多级列表框源码.zip"来实现这一功能。 首先,这个项目的核心在于构建一个多级联动的ListView或者RecyclerView,它需要处理不同级别的数据项,并且在用户交互时动态展开和...
在处理笑话数据时,可能需要使用ArrayList或者LinkedList来存储数据,同时利用排序算法(如快速排序、归并排序)来按照热度或时间对笑话进行排列。对于搜索功能,可能涉及到字符串匹配算法,如Trie树或KMP算法。 ...
标题提到的“仿java集合 list, 以及map工具类”,是指易语言中对Java集合框架的模拟实现。在Java中,List和Map是两种主要的数据结构。List是一种有序的集合,允许重复元素,可以按索引访问。常见的List实现有...
**基于Java的仿淘宝App源码详解** 在IT行业中,Java是一种广泛应用的开发语言,尤其在构建大型、复杂的Web应用程序时。"仿淘宝App"项目是利用Java技术栈来模仿淘宝网的功能,为学习者提供了一个实践平台,帮助他们...
【标题】"精选_基于JAVA的仿QQ聊天器_源码打包" 涉及的知识点主要集中在Java编程语言上,以及如何利用Java实现一个即时通讯系统,类似于QQ的聊天应用。下面将详细阐述相关技术点。 【Java开发语言】: 1. **面向...
此外,还需要熟悉Java集合框架(如ArrayList、LinkedList和HashMap)以及I/O流,这些对于处理用户输入和数据存储至关重要。 **2. 网络编程基础** 由于MSN聊天程序涉及到网络通信,因此我们需要掌握Java的网络编程...
在Android开发中,对数据进行排序通常涉及到Java集合框架,如ArrayList或LinkedList,以及Comparator接口。在这个案例中,开发者可能使用了城市名的首字母来作为排序依据,通过自定义Comparator实现按拼音首字母升序...
这个列表可以是ArrayList、LinkedList或其他类型的集合,用于保存已分隔的邮箱地址,并在界面上展示。 4. **UI动态更新**: 每次添加新联系人后,界面需要实时更新,显示新增的联系人项。这通常通过在UI线程上重新...
在实际的聊天应用中,消息通常会存储在一个数据结构中,如ArrayList或LinkedList。这个项目可能会展示如何将消息与对应的动画关联起来,以及如何动态地添加和移除消息。 5. **布局管理**: 为了在屏幕上合理地...
这个压缩包文件“Java本科毕业设计(含全部源码,具有参考价值).zip”包含了一个完整的毕业设计项目,名为"graduation-design-master",其中可能包含了以下关键知识点: 1. **Java基础**:毕业设计通常会覆盖Java...
同时,掌握Java的基本语法、异常处理、输入/输出流、集合框架(如ArrayList和LinkedList)以及线程知识也是必要的。在编写坦克机器人时,你会频繁使用这些概念来实现机器人的运动、射击、避开障碍物等功能。 二、...
实例66 栈和队列(运用LinkedList) 157 实例67 电视频道(运用集的相关类) 162 实例68 植物种类(运用映射的相关类) 165 实例69 不重复的随机数序列 168 实例70 读写Properties文件 170 实例71 配置...
同时,这些语言也提供了丰富的数据结构供选择,如C++的std::queue、Java的LinkedList或Python的collections.deque。 在电梯模拟中,性能优化也是一个考虑因素。比如,合理调度电梯的运行路径可以减少无效的移动,...
【Java项目合集.zip】是一个包含了多个Java项目源码的压缩包,主要针对Java编程语言的学习和实践。从标签"java"我们可以推断,这个压缩包中的内容将围绕Java编程语言的各种应用和技术展开,可能包括基础语法、面向...
- **Eclipse开发环境**:介绍Eclipse集成开发环境的基本使用,包括项目创建、源码编辑、编译运行等。 - **类和对象**:理解面向对象编程的基本概念,如类的定义、对象的实例化等。 - **封装、继承和多态**:掌握封装...