`
knight_black_bob
  • 浏览: 853490 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LinkedList 仿源码

阅读更多

 

 

 

 

 

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捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

  • 大小: 1 KB
分享到:
评论

相关推荐

    Android应用源码仿QQ分组列表修改版.zip

    《深入解析Android应用源码:仿QQ分组列表修改版》 在移动开发领域,Android作为全球最受欢迎的智能手机操作系统之一,其应用开发的学习与实践至关重要。本资源“Android应用源码仿QQ分组列表修改版”提供了一次...

    基于java的开发源码-仿千千静听音乐播放器源代码.zip

    该压缩包文件“基于java的开发源码-仿千千静听音乐播放器源代码.zip”包含了一款基于Java编程语言开发的音乐播放器的源代码。这个项目旨在模仿知名的千千静听音乐播放器的功能和用户体验,为学习Java编程和软件开发...

    仿微博源码仿微博源码仿微博源码仿微博源码仿微博源码仿微博源码

    再者,为了实现动态加载和分页显示,源码中可能会用到Java的集合框架,如ArrayList、LinkedList、HashMap等,以及流(Stream) API进行数据处理。同时,考虑到性能和用户体验,可能还会涉及到缓存技术,如Redis,用来...

    Android 仿QQ多级列表框源码.zip

    本篇将详细讲解如何使用提供的"Android 仿QQ多级列表框源码.zip"来实现这一功能。 首先,这个项目的核心在于构建一个多级联动的ListView或者RecyclerView,它需要处理不同级别的数据项,并且在用户交互时动态展开和...

    安卓开发-高仿糗事百科全套项目源码.zip

    在处理笑话数据时,可能需要使用ArrayList或者LinkedList来存储数据,同时利用排序算法(如快速排序、归并排序)来按照热度或时间对笑话进行排列。对于搜索功能,可能涉及到字符串匹配算法,如Trie树或KMP算法。 ...

    易语言仿java集合 list map源码

    标题提到的“仿java集合 list, 以及map工具类”,是指易语言中对Java集合框架的模拟实现。在Java中,List和Map是两种主要的数据结构。List是一种有序的集合,允许重复元素,可以按索引访问。常见的List实现有...

    精选_基于java的仿淘宝app_源码打包

    **基于Java的仿淘宝App源码详解** 在IT行业中,Java是一种广泛应用的开发语言,尤其在构建大型、复杂的Web应用程序时。"仿淘宝App"项目是利用Java技术栈来模仿淘宝网的功能,为学习者提供了一个实践平台,帮助他们...

    精选_基于JAVA的仿QQ聊天器_源码打包

    【标题】"精选_基于JAVA的仿QQ聊天器_源码打包" 涉及的知识点主要集中在Java编程语言上,以及如何利用Java实现一个即时通讯系统,类似于QQ的聊天应用。下面将详细阐述相关技术点。 【Java开发语言】: 1. **面向...

    msn聊天程序Java仿真代码.java源码学习

    此外,还需要熟悉Java集合框架(如ArrayList、LinkedList和HashMap)以及I/O流,这些对于处理用户输入和数据存储至关重要。 **2. 网络编程基础** 由于MSN聊天程序涉及到网络通信,因此我们需要掌握Java的网络编程...

    Android例子源码高仿58城市列表CityList

    在Android开发中,对数据进行排序通常涉及到Java集合框架,如ArrayList或LinkedList,以及Comparator接口。在这个案例中,开发者可能使用了城市名的首字母来作为排序依据,通过自定义Comparator实现按拼音首字母升序...

    winform高仿163邮箱收件人输入方式实现

    这个列表可以是ArrayList、LinkedList或其他类型的集合,用于保存已分隔的邮箱地址,并在界面上展示。 4. **UI动态更新**: 每次添加新联系人后,界面需要实时更新,显示新增的联系人项。这通常通过在UI线程上重新...

    Android 仿QQ5.0消息爆炸

    在实际的聊天应用中,消息通常会存储在一个数据结构中,如ArrayList或LinkedList。这个项目可能会展示如何将消息与对应的动画关联起来,以及如何动态地添加和移除消息。 5. **布局管理**: 为了在屏幕上合理地...

    Java本科毕业设计(含全部源码,具有参考价值).zip

    这个压缩包文件“Java本科毕业设计(含全部源码,具有参考价值).zip”包含了一个完整的毕业设计项目,名为"graduation-design-master",其中可能包含了以下关键知识点: 1. **Java基础**:毕业设计通常会覆盖Java...

    基于Java的坦克机器人战斗仿真引擎 Robocode.zip

    同时,掌握Java的基本语法、异常处理、输入/输出流、集合框架(如ArrayList和LinkedList)以及线程知识也是必要的。在编写坦克机器人时,你会频繁使用这些概念来实现机器人的运动、射击、避开障碍物等功能。 二、...

    JAVA 范例大全 光盘 资源

    实例66 栈和队列(运用LinkedList) 157 实例67 电视频道(运用集的相关类) 162 实例68 植物种类(运用映射的相关类) 165 实例69 不重复的随机数序列 168 实例70 读写Properties文件 170 实例71 配置...

    一个电梯运行的简单模拟实现

    同时,这些语言也提供了丰富的数据结构供选择,如C++的std::queue、Java的LinkedList或Python的collections.deque。 在电梯模拟中,性能优化也是一个考虑因素。比如,合理调度电梯的运行路径可以减少无效的移动,...

    Java项目合集.zip

    【Java项目合集.zip】是一个包含了多个Java项目源码的压缩包,主要针对Java编程语言的学习和实践。从标签"java"我们可以推断,这个压缩包中的内容将围绕Java编程语言的各种应用和技术展开,可能包括基础语法、面向...

    2017年尚学堂Java培训课程大纲.docx

    - **Eclipse开发环境**:介绍Eclipse集成开发环境的基本使用,包括项目创建、源码编辑、编译运行等。 - **类和对象**:理解面向对象编程的基本概念,如类的定义、对象的实例化等。 - **封装、继承和多态**:掌握封装...

Global site tag (gtag.js) - Google Analytics