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


链表是一种根据元素节点逻辑关系排列起来的一种数据接口;利用链表可以存储多个数据,类似数组,但是与数组不同的是链表的长度是可变的,对于数据的增删操作是比较方便的,具有链表结构的集合类入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();
		
	}

}
结果


发布了3 篇原创文章 · 获赞 0 · 访问量 1051
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览