`
韩悠悠
  • 浏览: 839864 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

链表的java实现

 
阅读更多

      使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。

 

        链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。

链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。

而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。

package com.algorithm;

/**
 * 链表的链结点,相当于车厢
 * @author lenovo
 *
 */
public class Node {

	/**
	 * 数据域
	 */
	public long data;
	
	//结点域(指针域),相当于火车与火车的链接
	public Node next;
	
	public Node(long value){
		this.data =value;
	}
	
	/**
	 * 显示方法
	 */
	public void display(){
		System.out.print(data+" ");
	}
}

 

 

package com.algorithm;

/**
 * 链表,相当于火车头
 * @author lenovo
 *使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。
 *但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
 *在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。
 *
 *链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。
 *链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。
 *而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。
 */
public class LinkList {

	/**
	 * 头结点,相当于火车头
	 */
	private Node first;
	
	public LinkList(){
		first =null;
	}
	
	/**
	 * 插入一个结点,在头结点插入
	 */
	public void insertFirst(long value){
		Node node = new Node(value);
		node.next = first;
		first =node;
	}
	
	/**
	 * 删除一个结点,在头结点删除
	 */
	public Node deleteFirst(){
		Node node = first;
		first=node.next;
		return node;
	}
	
	/**
	 * 显示方法
	 */
	public void display(){
		Node current = first;
		
		while(current!=null){
			current.display();
			current = current.next;
		}
		System.out.println();
	}
	
	/**
	 * 查找方法
	 * @param value
	 * @return
	 */
	public Node find(long value){
		Node current = first;
		while(current.data!=value){
			if(current.next==null){
				return null;
			}
			current = current.next;
		}
		return current;
	}
	
	/**
	 * 删除方法,根据数据域删除
	 * @param value
	 * @return
	 */
	public Node delete(long value){
		Node current = first;
		Node previous =first; //当前元素
		while(current.data!=value){
			if(current.next==null){
				return null;
			}
			previous=current;
			current = current.next;
			
		}
		if(current == first) {
			first = first.next;
		} else {
			previous.next = current.next;
		}
		return current;
	}
	
	public static void main(String[] args) {
		LinkList linkList = new LinkList();
		linkList.insertFirst(34);
		linkList.insertFirst(23);
		linkList.insertFirst(12);
		
		linkList.display();
		
		linkList.deleteFirst();
		linkList.display();
		
		Node node = linkList.find(34);
		node.display();
		
		System.out.println("--------");
		 node = linkList.delete(34);
		 node.display();
		 
		 System.out.println("~~~~~~~~~~~~~~~~~~~~~~");
		 linkList.display();
	}
}

 

 

分享到:
评论

相关推荐

    单链表双向链表java实现

    对于单链表的Java实现,我们可以这样定义: ```java public class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; } } public class LinkedList { Node head;...

    链表Java实现代码

    在这个Java实现中,我们将探讨如何创建一个单链表,包括节点定义、链表的基本操作以及测试代码。 首先,我们来看`Node.java`文件。这个文件通常会定义链表中的节点类,每个节点包含两个主要部分:数据(data)和...

    JAVA实现链表_双向链表

    JAVA实现链表_双向链表

    非循环单向链表JAVA实现

    非循环单向链表是一种常见的数据结构,在Java中实现它能帮助我们理解链表的基本操作,如插入、删除和遍历。在这个主题中,我们将深入探讨如何在Java中创建一个非循环单向链表,以及如何通过源码来实现其核心功能。 ...

    Java SE程序 类实现单向链表

    Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现...

    java实现链表操作

    用java实现了数据结构中的链表,作为新手学习数据结构和java的资料。

    异质链表的java实现

    以上就是异质链表的Java实现,以及如何在四个公司类中实现增删改功能的基本思路。实际编程时,还需要考虑异常处理、性能优化和代码可读性等因素。在处理异质链表时,要特别注意多态性的运用,以及在不同节点类型间...

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

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

    用链表实现线性表java

    本篇将深入探讨如何用链表来实现线性表,并通过提供的`ChainList.java`和`ListInterface.java`文件来理解其实现细节。 首先,线性表具有顺序访问的特点,其元素可以通过索引进行访问。链表是一种非连续存储结构,每...

    链表用java实现,弥补java的无指针的缺点

    在C和C++中,链表通常通过指针来实现,而在Java中,由于语言特性,不直接支持指针,但可以通过对象引用的方式来模拟链表结构。 【Java中链表的实现】 在Java中,我们可以通过创建一个Node类来模拟链表的节点,每个...

    java编写的循环链表来实现约瑟夫环

    循环链表 实现约瑟夫环 java 自己写的 测试通过 有注释

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

    本话题主要探讨两种常用的数据结构——单链表和双向链表在Java中的实现,以及相关的操作,如在头部添加节点、在尾部添加节点、遍历、逆置和删除。 首先,我们来理解单链表和双向链表的基本概念。单链表是一种线性...

    java实现的动态链表

    下面我们将深入探讨Java中如何实现动态链表及其相关知识点。 首先,我们要了解链表的基本概念。链表由一系列节点组成,每个节点包含两部分:数据和指向下一个节点的引用。在Java中,我们可以用类来表示节点,例如`...

    Java实现双向链表

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

    java 实现倒序链表

    ### Java实现倒序链表 在本篇文章中,我们将探讨如何使用Java来实现一个倒序链表的功能。链表作为一种常见的数据结构,在计算机科学中有着广泛的应用,而倒序链表则是链表操作中的一项基本技能,对于理解链表的工作...

    多项式相加 java链表实现

    在Java编程中,实现多项式的加法和乘法通常涉及到数据结构的设计,这里采用链表作为数据结构的基础。本文将详细讲解如何使用链表来实现两个多项式的相加和相乘,并以链表形式输出结果。 首先,我们需要定义一个表示...

    Java双向链表的实现

    在本篇文章中,我们将探讨如何在Java中实现一个简单的双向链表。 首先,我们需要定义一个表示链表节点的类,通常命名为`Node`。这个类包含三个字段:`data`用于存储数据,`prev`指向前一个节点,`next`指向后一个...

    JAVA双向链表反转实现

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

    数据结构-链表 JAVA语言实现

    数据结构-链表 JAVA语言实现,包含单向链表、双向链表、循环链表的遍历、删除和插入 详细介绍:http://blog.csdn.net/z740852294/article/details/77369439

Global site tag (gtag.js) - Google Analytics