`
qtlkw
  • 浏览: 307323 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java实现单双向链表

    博客分类:
  • JAVA
阅读更多
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实现双向链表

    用Java定义一个双向链表,实现链表的基本操作: 初始化、获取头结点、添加新元素、删除链表元素、 获取链表元素、查找链表元素、更新链表中某个元素、 判断链表是否为空、求链表元素个数、输出链表元素、清空链表。

    JAVA双向链表反转实现

    以下是使用迭代方式实现双向链表反转的Java代码: ```java public void reverse() { if (head == null || head.next == null) { return; } Node current = head; Node previous = null; while (current != ...

    用java实现双向链表操作

    用java实现双向链表的完整操作,主要用到内部类实现。

    Java有序非循环双向链表算法实例

    在Java编程中,有序非循环双向链表是一种重要的数据结构,它在许多复杂的数据操作和算法实现中扮演着核心角色。有序意味着链表中的元素按照特定的顺序排列,非循环则表示链表的首节点和尾节点之间没有链接,使得遍历...

    使用Java实现无头双向链表

    这段代码实现了一个无头双向链表(Doubly Linked List)。无头双向链表是一种链表数据结构,其中每个节点不仅包含指向下一个节点的指针(`next`),还包含指向前一个节点的指针(`prev`)。这种结构使得链表在某些...

    Java实现双向链表(两个版本)

    主要介绍了Java实现双向链表(两个版本)的相关资料,需要的朋友可以参考下

    Java算法实例-双向链表操作

    本实例聚焦于Java中的一个重要数据结构——双向链表,它在很多场景下都有着广泛的应用。双向链表与单链表相比,其独特之处在于每个节点不仅包含指向下一个节点的指针,还包含指向前一个节点的指针,这使得在链表中的...

    双端链表和双向链表Java代码

    本主题主要关注两种特殊类型的链表——双端链表(Double-ended LinkedList)和双向链表(Bidirectional LinkedList),并以Java语言实现为例进行讲解。 双端链表,也称为双链表,是一种允许在链表的两端进行插入和...

    java实现的单向链表和双向链表

    本篇将深入探讨由Java实现的单向链表和双向链表。 首先,我们来理解单向链表。单向链表中的每个节点包含两部分:数据域(存储实际数据)和指针域(存储指向下一个节点的引用)。这种结构使得链表只能向前遍历,不能...

    Java双向链表的实现

    下面我们将详细讲解如何实现一个自定义的Java双向链表,并参考提供的`LinkNode.java`文件来理解其内部机制。 首先,我们需要定义一个表示链表节点的类`LinkNode`。这个类通常包含三个属性:存储数据的`data`字段、...

    单链表双向链表java实现

    在这个话题中,我们将深入探讨两种基本的线性数据结构——单链表和双向链表,并通过Java语言来实现它们。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:数据域和指针域。数据域存储实际的数据...

    基于双向链表的基数排序

    基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字...为了尽可能少的消耗复制时占用的空间,桶的数据结构选择链表,为了构造队列,选择使用双向列表。

    java数据结构之实现双向链表的示例

    本示例将详细介绍如何在Java中实现一个简单的双向链表,并提供相关的操作方法。 双向链表由一系列节点组成,每个节点包含三个主要部分:数据(存储实际信息)、前驱节点引用(指向前面的节点)和后继节点引用(指向...

    java 单,双向链表自己做的

    本文将详细解析如何用Java实现单向链表和双向链表,并探讨它们的应用场景与优缺点。 单向链表是一种线性数据结构,其中每个元素(节点)包含一个数据部分和一个指向下一个元素的引用。在Java中,我们可以定义一个...

    双向链表(java实现)

    在Java中实现双向链表,我们通常会创建一个表示链表节点的类(如`Node`),以及一个表示链表本身的类(如`MyLinkedList`)。`Node`类包含数据和两个引用,分别用于指向前一个节点和后一个节点。`MyLinkedList`类则...

    Java基于位置接口实现的双向链表节点类(算法源码)

    * 基于位置接口实现的双向链表节点类 */ package dsa; public class DLNode implements Position { private Object element;//数据对象 private DLNode prev;//指向前驱节点 private DLNode next;//指向后继...

    doublelink.zip_DoubleLink java_双向链表实现

    在本文中,我们将深入探讨如何使用Java编程语言实现一个高效的双向链表数据结构,并通过测试用例进行验证。首先,让我们了解双向链表的基本概念。 双向链表是一种线性数据结构,其中每个节点包含两个指针,分别指向...

Global site tag (gtag.js) - Google Analytics