1.链表结构
链表是链式的结构
2.链表的组成
链表是由头节点,中间节点和尾节点组成
节点是由两个部分组成:
1.数据域
2.引用域
3.链表的实现
Node{
数据域
引用域
}
MyLinkedList{
记录元素总数的属性
头节点属性
head;
尾节点属性
trail;
}
下面上代码
public class DoubleLinkedList{
private static class Node {
Object value;
Node prev = this;
Node next = this;
Node(Object v) {
value = v;
}
public String toString() {
return value.toString();
}
}
private Node head = new Node(null);
// 头节点
private int size;
// 链表大小
// 以下是接口方法
public boolean addFirst(Object o) {
addAfter(new Node(o), head);
return true;
}
public boolean addLast(Object o) {
addBefore(new Node(o), head);
return true;
}
public boolean add(Object o) {
return addLast(o);
}
public boolean add(int index, Object o) {
addBefore(new Node(o), getNode(index));
return true;
}
public boolean revise(int index, Object o) {
reviseNode(new Node(o), getNode(index));
return true;
}
public boolean remove(int index) {
removeNode(getNode(index));
return true;
}
public boolean removeFirst() {
removeNode(head.next);
return true;
}
public boolean removeLast() {
removeNode(head.prev);
return true;
}
public Object get(int index) {
return getNode(index).value;
}
public int size() {
return size;
}
public String toString() {
StringBuffer s = new StringBuffer();
Node node = head;
for (int i = 0; i < size; i++) {
node = node.next;
if (i > 0)
s.append(" ");
s.append(node.value);
}
return s.toString();
}
private Node getNode(int index) {
if (index < 0 || index >= size)
System.out.println("错误");
Node node = head.next;
for (int i = 0; i < index; i++)
node = node.next;
return node;
}
private void addBefore(Node newNode, Node node) {
newNode.next = node;
newNode.prev = node.prev;
newNode.next.prev = newNode;
newNode.prev.next = newNode;
size++;
}
private void reviseNode(Node newNode, Node node) {
newNode.next = node.next;
newNode.prev = node.prev;
newNode.next.prev = newNode;
newNode.prev.next = newNode;
}
private void addAfter(Node newNode, Node node) {
newNode.prev = node;
newNode.next = node.next;
newNode.next.prev = newNode;
newNode.prev.next = newNode;
size++;
}
private void removeNode(Node node) {
node.prev.next = node.next;
node.next.prev = node.prev;
node.prev = null;
node.next = null;
size--;
}
}
分享到:
相关推荐
java双端队列的实现-Java实现自定义双端队列(链表和数组两种方式) 数组和链表.pdf
java基础知识代码实现,包括冒泡算法,快速算法,九九乘法表,创建多线程的方式,自定义链表,递归使用方式,创建单例等,可解压代码直接运行测试学习!
自定义的双向链表 博文链接:https://hiliangliang1130-126-com.iteye.com/blog/1144023
java 自定义链表的使用,仅供参考,自定义使用
该资源利用基础的链表结构,结合泛型和反射的知识点,实现重写LinkedList集合类,可以存放任意类型数据。比较推荐对Java有稳固基础的同学来阅读,为了方便阅读,代码的注释写的非常的清楚
signByIF.java 用if语句实现符号函数示例 triangleStar.java 输出一个由*组成的直角三角形 upperToLowCase.java 大写转换成小写 variableScopeExample.java 变量使用范围示例 第3章 示例描述:本章学习对象和类...
这个队列的实现基于链表,可以高效地管理大量的等待线程,实现线程的排队和唤醒。 JUC 和 AQS 在 Java 并发编程中扮演着至关重要的角色。JUC 提供了丰富的多线程并发工具,可以帮助开发者构建高性能、可伸缩性的多...
Java:数据结构(DS) 所有数据结构均在Java中实现。 这是我出于教育目的而实施的所有数据结构的集合。 该代码经过了优化,并被编写为正确和可读的。 所有数据结构均经过测试,并被认为是正确的。测验编译编写程序时...
即插即用 基于各种DS和Algo概念的自定义实现的即插即用Java类的编译。 CustomLinkedList.java:标准链接列表功能与其他功能的组合。... CustomDoublyLinkedList.java:双链表的自定义实现,如Stack和Queue。
第13章常见数据结构的Java实现 13 1链表 13 2栈 13 3树集 13 4树映射 13 5散列集 13 6散列表 13 7向量 习题 第14章图形与图像 14 1绘制文本 14 2绘制基本图形 14 3建立字体 14 4清除 14 5Java2D 14 6图形的布尔运算 ...
I CSI 213(= I CEN 213)(以前是I CSI ... Java中的链表实现。 普雷斯科特·卢克H4 Java中的堆栈和队列实现。 普雷斯科特·卢克H5 Java中的冒泡排序实现。 普雷斯科特·卢克H6 Java中的二叉树和二叉搜索树实现。
最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...
020601_【第6章:面向对象(高级)】_继承的基本实现笔记.pdf 020602_【第6章:面向对象(高级)】_继承的进一步研究笔记.pdf 020603_〖第6章:面向对象(高级)〗_范例:继承的应用笔记.pdf 020604_【第6章:面向...
界面使用swing做的,也利用的一些文件来存储数据,希望对大家能够有所帮助
链表 248 栈(stack) 249 队列: 250 树: 250 实例分析 252 内容总结 274 独立实践 275 第十六章:数据库(一) 276 学习目标 276 数据库的基本概念 277 数据的描述 277 数据联系的描述 278 数据模型 278 数据库三级...
**章 算法和实现算法的Java语法 1.1 建立算法初步概念 1.1.1 什么是算法 1.1.2 算法的发展历史 1.1.3 算法的分类 1.2 算法相关概念的区别 1.2.1 算法与公式的关系 1.2.2 算法与程序的关系 1.2.3 算法与数据结构的...
通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出Session...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置...
“工欲善其事,必先利其器”,在Java程序开发过程中,很多算法(比如:MD5加密算法)、很多数据结构(比如链表LinkedList)已经实现并且大多放在类库的java.util包中,程序员只需要了解各种工具的功能就可以直接调用...