public class Node {
private Object data;
private Node next;
public Node(Object data, Node next) {
super();
this.data = data;
this.next = next;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
public class LinkedList {
private Node head;
private Node tail;
private int size;
public void add(Object obj) {
Node node = new Node(obj, null);
if (head == null) {
head = node;
tail = node;
}
tail.setNext(node);
tail = node;
size++;
}
public int size() {
return size;
}
}
junit test code:
@Test
public void testAdd() {
LinkedList linkedList = new LinkedList();
for (int i = 0; i < 15; i++) {
linkedList.add(new Cat(i));
}
assertTrue(linkedList.size()==15);
}
public class LinkNode {
private Object data;
private LinkNode right;
private LinkNode left;
public LinkNode(Object data, LinkNode right, LinkNode left) {
super();
this.data = data;
this.right = right;
this.left = left;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public LinkNode getRight() {
return right;
}
public void setRight(LinkNode right) {
this.right = right;
}
public LinkNode getLeft() {
return left;
}
public void setLeft(LinkNode left) {
this.left = left;
}
}
public class Link {
private LinkNode head;
private LinkNode tail;
private int size;
public void add(Object obj) {
LinkNode node = new LinkNode(obj, null, null);
if (head == null) {
head = node;
tail = head;
head.setRight(tail);
head.setLeft(tail);
}
tail.setRight(node);
node.setLeft(tail);
tail = node;
tail.setRight(head);
head.setLeft(tail);
size++;
}
public int size() {
return size;
}
public LinkNode getTailNode() {
return tail;
}
public LinkNode getHeadNode() {
return head;
}
}
junit test code:
@Test
public void testAdd() {
Link link = new Link();
for (int i = 0; i < 15; i++) {
link.add(new Cat(i));
}
assertTrue(link.size()==15);
assertEquals(link.getHeadNode().getLeft().getData(),link.getTailNode().getData());
assertEquals(link.getTailNode().getRight().getData(),link.getHeadNode().getData());
}
分享到:
相关推荐
本话题主要探讨两种常用的数据结构——单链表和双向链表在Java中的实现,以及相关的操作,如在头部添加节点、在尾部添加节点、遍历、逆置和删除。 首先,我们来理解单链表和双向链表的基本概念。单链表是一种线性...
JAVA实现链表_双向链表
用Java定义一个双向链表,实现链表的基本操作: 初始化、获取头结点、添加新元素、删除链表元素、 获取链表元素、查找链表元素、更新链表中某个元素、 判断链表是否为空、求链表元素个数、输出链表元素、清空链表。
以下是使用迭代方式实现双向链表反转的Java代码: ```java public void reverse() { if (head == null || head.next == null) { return; } Node current = head; Node previous = null; while (current != ...
用java实现双向链表的完整操作,主要用到内部类实现。
在Java编程中,有序非循环双向链表是一种重要的数据结构,它在许多复杂的数据操作和算法实现中扮演着核心角色。有序意味着链表中的元素按照特定的顺序排列,非循环则表示链表的首节点和尾节点之间没有链接,使得遍历...
这段代码实现了一个无头双向链表(Doubly Linked List)。无头双向链表是一种链表数据结构,其中每个节点不仅包含指向下一个节点的指针(`next`),还包含指向前一个节点的指针(`prev`)。这种结构使得链表在某些...
主要介绍了Java实现双向链表(两个版本)的相关资料,需要的朋友可以参考下
本实例聚焦于Java中的一个重要数据结构——双向链表,它在很多场景下都有着广泛的应用。双向链表与单链表相比,其独特之处在于每个节点不仅包含指向下一个节点的指针,还包含指向前一个节点的指针,这使得在链表中的...
本主题主要关注两种特殊类型的链表——双端链表(Double-ended LinkedList)和双向链表(Bidirectional LinkedList),并以Java语言实现为例进行讲解。 双端链表,也称为双链表,是一种允许在链表的两端进行插入和...
本篇将深入探讨由Java实现的单向链表和双向链表。 首先,我们来理解单向链表。单向链表中的每个节点包含两部分:数据域(存储实际数据)和指针域(存储指向下一个节点的引用)。这种结构使得链表只能向前遍历,不能...
下面我们将详细讲解如何实现一个自定义的Java双向链表,并参考提供的`LinkNode.java`文件来理解其内部机制。 首先,我们需要定义一个表示链表节点的类`LinkNode`。这个类通常包含三个属性:存储数据的`data`字段、...
在这个话题中,我们将深入探讨两种基本的线性数据结构——单链表和双向链表,并通过Java语言来实现它们。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:数据域和指针域。数据域存储实际的数据...
基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字...为了尽可能少的消耗复制时占用的空间,桶的数据结构选择链表,为了构造队列,选择使用双向列表。
本示例将详细介绍如何在Java中实现一个简单的双向链表,并提供相关的操作方法。 双向链表由一系列节点组成,每个节点包含三个主要部分:数据(存储实际信息)、前驱节点引用(指向前面的节点)和后继节点引用(指向...
本文将详细解析如何用Java实现单向链表和双向链表,并探讨它们的应用场景与优缺点。 单向链表是一种线性数据结构,其中每个元素(节点)包含一个数据部分和一个指向下一个元素的引用。在Java中,我们可以定义一个...
在Java中实现双向链表,我们通常会创建一个表示链表节点的类(如`Node`),以及一个表示链表本身的类(如`MyLinkedList`)。`Node`类包含数据和两个引用,分别用于指向前一个节点和后一个节点。`MyLinkedList`类则...
* 基于位置接口实现的双向链表节点类 */ package dsa; public class DLNode implements Position { private Object element;//数据对象 private DLNode prev;//指向前驱节点 private DLNode next;//指向后继...
在本文中,我们将深入探讨如何使用Java编程语言实现一个高效的双向链表数据结构,并通过测试用例进行验证。首先,让我们了解双向链表的基本概念。 双向链表是一种线性数据结构,其中每个节点包含两个指针,分别指向...