`
GLC
  • 浏览: 112470 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java链表简单介绍

 
阅读更多


  链表是一种物理存储单元上非连续、非顺序的存储结构;数据之间的逻辑顺序是靠链表中的指针来实现的。而链表本身由结点组成、结点可以在运动时动态生成;
   结点:由数据域和指针域组成。

  链表分为单向链表和双向链表


单向链表:每个结点由存储数据元素的数据域和指向下一结点的指针域组成。
例:单链表的结点结构

/**
	 * @param 单链表结点类
	 */
    //节点类的数据对象
	private Object obj;
	//对下一节点的引用
	private LinkNode next;
	//在创建节点对象时就传入节点中的数据对象
	public LinkNode(Object obj){
		this.obj=obj;
	}
	
	public Object getObj(){
		return obj;
	}
	
	public void setObj(Object obj){
		this.obj=obj;
	}
	
	public LinkNode getNext(){
		return next;
	}
	
	public void setNext(LinkNode next){
		this.next=next;
	}



而双向链表是单向链表的改进、因为在单向链表中,我们只能从前往后使用,不能从后往前使用;所以双向链表中、我们在结点中可以增加一个指向前结点的指针;这样,我们就可以随便地使用链表中的数据了。
结点表示:


private Object obj;
		//对下一节点的引用
		private DoubleLinkNode child;
		//对上一节点的插入
	    private DoubleLinkNode parent;
		//在创建节点对象时就传入节点中的数据对象
		public DoubleLinkNode(Object obj){
			this.obj=obj;
		}
		
		public Object getObj(){
			return obj;
		}
		
		public void setObj(Object obj){
			this.obj=obj;
		}
		
		public DoubleLinkNode getChild(){
			return child;
		}
		
		public void setChild(DoubleLinkNode child){
			this.child=child;
		}
		
		public DoubleLinkNode getParent(){
			return parent;
		}
		
		public void setParent(DoubleLinkNode parent){
			this.parent=parent;
		}



链表的使用:
链表最基本的使用就是实现查找、插入、删除、合并、排序、统计、或简单的计算。

其链表的插入:


/**
	 * 在指定地点插入节点
	 * 
	 * @param Index
	 * @param obj
	 */
	public void insertIndexObj(int index, Object obj) {
		// 判断插入的位置是否正确
		if (this.getLength() < index || index < 0) {
			// 抛出异常
			throw new java.lang.RuntimeException("下标越界" + index + "链表大小:"
					+ this.getLength());
		} else {
			// 创建一个新的节点
			DoubleLinkNode newNode = new DoubleLinkNode(obj);
			// 调用方法,得到当前索引位置的结点
			DoubleLinkNode node = this.getLinkNode(index);
			// 插入操作前进行判断是否为空链表
			if (index == 0) {
				// 将头节点指向新节点
				front = newNode;
			} else {
				// 插入时,先得到其索引值位置的父节点
				DoubleLinkNode fNode = node.getParent();
				// 将新节点的上节点指针指向fNode
				newNode.setParent(fNode);
				// 将fNode节点的子节点指向新节点
				fNode.setChild(newNode);
			}
			// 将新节点的子节点指向当前索引值位置的节点
			newNode.setChild(node);
			// 将索引位置的节点的父节点指向新节点
			node.setParent(newNode);
		}
	}


如得到链表的长度:

/**
	 * 得到链表的长度
	 * 
	 * @return
	 */
	public int getLength() {
		int count = 0;
		if (null == front) {
			return count;
		}
		DoubleLinkNode node = front.getChild();
		// 遍历链表
		while (null != node) {
			count++;
			node = node.getChild();
		}
		return count + 1;
	}
分享到:
评论
1 楼 小蘑菇的梦想 2013-04-30  
排序呢!!!!!!

相关推荐

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

    单链表适用于简单、线性的数据访问,而双向链表则在需要双向遍历或频繁逆置的情况下更有优势。理解这些数据结构的原理和实现,对于编写高效、灵活的代码至关重要。在实际应用中,开发者应根据具体需求选择合适的数据...

    java链表 链表的讲解 java源代码加注释

    在Java编程语言中,链表是一种非常重要的数据结构,它不同于数组,不依赖于内存的连续空间。链表由一系列节点组成,每个节点包含数据和指向下一个节点的引用。在这个主题中,我们将深入探讨Java中的链表,以及如何...

    Java算法(链表操作实例)

    链表在解决许多算法问题中都非常有用,例如二分查找、快速排序、哈希表等。通过熟练掌握链表操作,可以提升Java程序员的算法能力,并在面试和实际项目中游刃有余。在实际开发中,Java的`java.util.LinkedList`类提供...

    java链表实现

    - 在Java中,我们可以创建一个简单的单链表类,包含Node(节点)类和LinkedList(链表)类。 - Node类:包含数据域(data)和指针域(next)。 - LinkedList类:包含头节点(head),用于添加、删除和查找节点的...

    java链表反转及排序

    在“java链表反转及排序”这个主题中,我们将探讨如何在Java中实现单向链表的反转和排序。首先,我们创建一个链表节点类,包含数据和指向下一个节点的引用: ```java public class ListNode { int val; // 节点值 ...

    JAVA 链表实验源代码

    在实际应用中,链表因其动态性(不需预先确定大小)和高效插入/删除(相对于数组)特性,常用于数据结构如栈、队列、哈希表等。 这些源代码实验可以帮助我们深入理解链表的工作原理以及如何在Java中实现它们。通过...

    多项式相加 java 链表

    总结来说,使用Java链表实现多项式相加是一种直观且有效的方法。通过链表的特性,我们可以方便地管理多项式的各项,并进行相应的计算。这个过程不仅锻炼了数据结构和算法的应用能力,也提高了代码的可读性和可维护性...

    单链表双向链表java实现

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

    基于JAVA的单链表简单实现

    数据域存储实际的数据,而指针域则指向链表中的下一个节点。在Java中,我们可以使用对象和引用的概念来实现单链表。 首先,我们需要创建一个表示链表节点的类Node,它通常有两个属性:data(用于存储数据)和next...

    java入门程序(模拟图书馆管理)

    本项目“java入门程序(模拟图书馆管理)”是针对初学者设计的一个简单的学习资源,它通过使用链表这种数据结构来实现对图书馆书籍的管理功能,帮助初学者理解Java编程以及链表的基本概念。 链表是一种线性数据结构...

    java 实现倒序链表

    在Java中,我们可以通过定义一个简单的链表节点类(`Node`)来表示链表中的每个节点,并通过一系列的方法来实现倒序功能。 #### 定义节点类 首先,我们需要定义一个`Node`类,该类包含两个属性:`data`用于存储...

    Java实现单链表以及单链表的操作.zip

    在Java中,我们可以创建一个名为`Node`的类来表示链表的节点,其中包含一个`data`字段存储数据和一个`next`字段指向下一个节点。例如: ```java public class Node { int data; Node next; public Node(int ...

    java实现自己的单链表、双链表、Map存储

    在Java中,我们可以创建一个Node类来表示节点,并在主链表类中维护头节点。以下是一个简单的单链表实现: ```java public class SingleLinkedList { private Node head; private class Node { int data; Node ...

    java版链表实现定时器功能

    本文将深入探讨如何利用链表来实现一个简单的定时器功能,并结合`java`、`链表`、`定时器`、`数据结构`以及`j2me`的相关知识进行详细讲解。 首先,我们需要理解链表的基本概念。链表不同于数组,它不是连续存储元素...

    java 数据结构 链表

    此外,链表在解决某些特定问题时非常有用,如哈希表(使用链表解决冲突)、图形算法(邻接表表示图的节点连接)等。了解并熟练掌握链表的原理和操作,对于提升Java编程能力和解决复杂问题的能力至关重要。 总结来说...

    链表(数据结构--Java版)

    3. `LinkedListClass.java` - 这个文件很可能是对标准Java的`java.util.LinkedList`类的一个简单实现或者示例,`LinkedList`是Java集合框架的一部分,实现了`List`、`Deque`和`Cloneable`接口。它使用双向链表来存储...

    链表逆序输出

    本示例中的“链表逆序输出”是一个典型的Java编程问题,旨在帮助初学者理解链表的操作以及如何通过代码实现逆序输出。下面我们将深入探讨这个主题。 链表与数组不同,它不连续存储数据,而是通过节点之间的引用关系...

    java贪吃蛇(链表)

    在Java编程中,"java贪吃蛇(链表)"是一个经典的编程练习,它结合了数据结构中的链表知识和游戏开发的基本概念。这个项目利用链表来实现贪吃蛇的身体部分,使得代码更加简洁高效。 贪吃蛇游戏的主体是蛇的身体,每...

    我的Java单链表练习

    在Java中,我们可以创建一个简单的单链表类来表示链表结构。这个类通常包括一个头节点(head)以及各种操作链表的方法,如添加节点(add)、删除节点(remove)、查找节点(search)等。以下是一个简单的单链表节点...

    java实现的动态链表

    以下是一个简单的动态链表实现: ```java public class DynamicLinkedList { Node head; public DynamicLinkedList() { this.head = null; } // 插入节点到链表尾部 public void add(int value) { if ...

Global site tag (gtag.js) - Google Analytics