- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
工程师培训资料标题:Java培训系列课程-链表(精品培训)培训人:xx本章学习目标理解面向对象三大主要特征;掌握类与对象的区别与使用;掌握类中封装性的基础实现;掌握类中构造方法以及构造方法重载的概念及使用;掌握数组的使用以及初始化操作;掌握引用数据类型的特点以及引用传递操作分析方法;掌握String类的特点以及String类中常用方法的使用;掌握this、static关键字的使用;掌握内部类的特点以及使用形式;理解链表操作的实现原理以及常用操作方法。链表链表是一种根据元素节点逻辑关系排列起来的一种数据结构。利用链表可以保存多个数据,这一点类似于数组的概念,但是数组本身有一个缺点 —— 数组的长度固定,不可改变,在长度固定的情况下首选的肯定是数组,但是在现实的开发之中往往要保存的内容长度是不确定的,那么此时就可以利用链表这样的结构来代替数组的使用。链表的基本形式链表是一种最为简单的数据结构,它的主要目的是依靠引用关系来实现多个数据的保存,那么下面假设现在要保存的数据是字符串(引用类型),则可以按照图所示的关系进行保存。Node类所有要保存的数据都会被包装到一个节点对象之中,之所以会引用一个节类,是因为只依靠保存的数据无法区分出先后顺序,而引入了Node类可以包装数据以及指向下一个节点,所以在Node类的设计中主要保存两个属性:数据(data)与下一个节点引用(next),如图所示。范例:定义一个Node类class Node {// 每一个链表实际上就是由多个节点所组成的 private String data;// 要保存的数据 private Node next;// 要保存的下一个节点 /** * 每一个Node类对象都必须保存有相应的数据 * @param data 要通过节点包装的数据 */ public Node(String data) { // 必须有数据才有Node this.data = data; } //setter、getter略}Node节点类本身不属于一个简单Java类,而是一个功能性的表示类,而在这个类之中,主要保存了两种数据:存储的对象(此处暂时保存的是String型对象),另一种存储的是当前节点的下一个节点(next)。链表数据取出在进行链表操作的时候,首先需要的是一个根节点(第一个节点即为根节点),之后每一个节点的引用都保存在上一节点的next属性之中,而在进行输出的时候也应该按照节点的先后顺序,一个一个取得每一个节点所包装的数据范例:手工配置节点关系,并使用while循环输出全部节点数据public class LinkDemo { public static void main(String args[]) { // 第一步:定义要操作的节点以及设置好包装的字符串数据 Node root = new Node(火车头) ;// 定义节点,同时包装数据 Node n1 = new Node(车厢A) ; // 定义节点,同时包装数据 Node n2 = new Node(车厢B) ; // 定义节点,同时包装数据 root.setNext(n1) ; // 设置节点关系 n1.setNext(n2) ; // 设置节点关系 // 第二步:根据节点关系取出所有数据 Node currentNode = root ; // 当前从根节点开始读取 while (currentNode != null) { // 当前节点存在有数据 System.out.println(currentNode.getData()) ; currentNode = currentNode.getNext() ;// 将下一个节点设置为当前节点 } }}程序执行结果:火车头车厢A车厢B程序执行步骤本程序一共分为了三个操作步骤进行:第1步:定义各个独立的节点,同时封装要保存的字符串数据;第2步:配置不同节点彼此之间的操作关系;第3步:由于现在不清楚要输出的节点个数,只知道输出的结束条件(没有节点就不输出了,curentNode == null)所以使用while循环,依次取得每一个节点,并输出里面包装的数据。范例:手工配置节点关系,通过递归输出全部节点数据public class LinkDemo { public static void main(String args[]) { // 第一步:定义要操作的节点以及设置好包装的字符串数据 Node root = new Node(火车头) ; // 定义节点,同时包装数据 Node n1 = new Node(车厢A) ; // 定义节点,同时包装数据 Node n2 = new Node(车厢B) ; // 定义节点,同时包装数据 root.setNext(n1)
文档评论(0)