java链表结构基本形式(学习笔记)

来源:互联网 发布:淘宝美工首页一般多久 编辑:程序博客网 时间:2024/06/07 00:56

 链表是一种根据元素节点逻辑关系排列起来的一种数据接口;利用链表可以存储多个数据,类似数组,但是与数组不同的是链表的长度是可变的,对于数据的增删操作是比较方便的,具有链表结构的集合类入linkedsetlinkedmap具有增删快,查询慢的特点;

链表节点


 

链表操作的标准形式结构

  1. 客户端代码不关注具体的Node及引用关系,只需要关注Link中提供的数据操作的方法
  2. Node关注数据的保存和引用关系的分配
  3. Link关注Node对象的产生和根节点

代码如下:

Node

package listStructure.entity;/*** 节点* 主要功能:* 保存数据* 设置下一个节点*/public class Node {//定义一个节点    private String data;//需要保存的数据    private Node next;//下一个节点        public Node(String data) {//只有当数据存在时候才可以创建节点        this.data = data;    }        /**     * 设置节点关系     */    public void setNext(Node next) {//设置下一节点        this.next = next;    }        public Node getNext() {//获取下一个节点                return this.next;    }        public String getData() {//获取当前节点的数据        return this.data;    }     /**     * 实现节点的增加     * 使用递归操作     */    public void addNode(Node newNode) {        if(this.next == null) {//当当前节点中的下一个节点为null时,才可以把新数据保存到下一个节点            this.next = newNode;        }else {//如果当前节点中的下一节点不是null则需要再次使用下一个节点判断是否可以添加节点            this.next.addNode(newNode);        }    }        /**     * 输出节点数据     */    public void printNode() {        System.out.println(this.data);        if (this.next  != null) {            this.next.printNode();        }    }}

Link
package listStructure.Utils;import listStructure.entity.Node;/** * 操作Node中的数据 * @author cgg48 * */public class Link {private Node root;//根节点public void add(String data) {/** * 如果是第一个数据,则根节点就是第一个节点,否则将数据添加到存在的数据的后面 */Node newNode = new Node(data);if (this.root == null) {this.root = newNode;}else {this.root.addNode(newNode);}}/** * 使用递归输出数据 */public void print() {if (root != null) {this.root.printNode();}}}

Test

package listStructure.test;import listStructure.Utils.Link;public class LinkTest {public static void main(String[] args) {/** * 新增几个节点并输出 */Link link = new Link();link.add("测试1");link.add("测试2");link.add("测试3");link.add("测试4");/** * 输出 */link.print();}}
结果


原创粉丝点击