美文网首页
自定义链表

自定义链表

作者: 一起DP吧 | 来源:发表于2019-07-12 16:51 被阅读0次

自定义链表

1 实现Node节点类

 Node 节点包含一个用来装载数据的容器和一个指向下一个Node节点的指针
 
 package node;

 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

 /**
  * @Description 自定义节点class
  * @Authror taren
  * @DATE 2019/7/12 10:01
  */
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
 public class CustomNode<T> {

 private T data;

 private CustomNode<T> next;

 public CustomNode(T data) {
    this.data = data;
 }

 //自定义增加节点的方法
 public void addNode(CustomNode t) {
     if (this.next == null) {
        this.next = t;
     } else {
        this.next.addNode(t);
     }
 }

 //打印节点的方法
 public void print() {
     if (null != this.data) {
         System.out.println(this.data);
     }

     if (null != this.next) {
        this.next.print();
     }
 }

 //删除Node的方法
 public void removeNode(String data) {
     if (this.next == null) {
         return;
     }
     if (this.next.getData().equals(data)) {
         this.next = this.next.getNext();
     } else {
         this.next.removeNode(data);
     }
 }
}

2 实现Link类

Link类包含一个root节点
package node;

import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Description 自定义链表class
 * @Authror taren
 * @DATE 2019/7/12 10:09
 */
@Data
@NoArgsConstructor
public class CustomLink {

private CustomNode root;

// 新增节点方法
public void add(String data) {
    if (data != null && data.trim().length() > 0) {
        CustomNode node = new CustomNode(data);
        if (this.root == null) {
            this.root = node;
        } else {
            this.root.addNode(node);
        }
    }
}
// 打印链表
public void print() {
    if (this.root != null) {
        this.root.print();
    }
}
// 移除节点
public void remove(String data) {
    if (this.root.getData().equals(data)) {
        this.root = this.root.getNext();
    } else {
        this.root.removeNode(data);
    }
}

}

3 编写测试类进行对链表进行测试

package node;

import org.junit.Test;

/**
 * @Description
 * @Authror taren
 * @DATE 2019/7/12 10:13
 */
public class LinkTest {

@Test
public void test01(){
    //增加节点
    CustomLink link = new CustomLink();
    link.add("节点A");
    link.add("节点B");
    link.add("节点C");
    link.add("节点D");
    link.print();
}

@Test
public void test02(){
    //增加节点
    CustomLink link = new CustomLink();
    link.add("节点A");
    link.add("节点B");
    link.add("节点C");
    link.add("节点D");
    //移除节点D
    link.remove("节点B");
    link.print();
}

@Test
public void test03(){
    //增加节点
    CustomLink link = new CustomLink();
    link.add("节点A");
    link.add("节点B");
    link.add("节点C");
    link.add("节点D");
    //打印节点信息
    link.getRoot().getNext().print();
}

}

相关文章

  • 链表

    文章结构 链表的定义 链表的插入和删除操作 链表的特性 常见的链表结构 自定义链表 链表的经典操作 使用链表实现L...

  • Java链表与数组间的相互转换

    自定义链表ListNode类 将链表转换成数组 将数组转换成链表

  • 阿里巴巴在线编程题

    题目1、编写代码,实现:自定义一个链表数据结构(可以是单链表或双向链表),然后初始化一个链表数据, //并对该链表...

  • 自定义链表

    自定义链表 1 实现Node节点类 2 实现Link类 3 编写测试类进行对链表进行测试 }

  • 线性表的一些笔记

    单链表 静态链表 乙丁之间插入丁 自定义的malloc函数会更新第一个元素的游标,即修改新的备用元素的游标值 循环链表

  • 手写HashMap

    Map 最经典的数据结构:数组 + 链表 自定义Map接口 面向接口的编程思想。 自定义Map实现类 成员变量 E...

  • 【kotlin】自定义节点链表 - LinkedList

    使用自定义节点的链表。 由于原生LinkedList无法使用自定义节点,所以创建此类。使用此类可以手动对节点进行修...

  • JUC源码分析-集合篇(九):LinkedBlockingQue

    LinkedBlockingQueue 是单向链表结构的自定义容量的阻塞队列,元素操作按照FIFO(first-i...

  • Linux C 结构体

    一、总结 预处理 自定义数据类型 ** 结构体,联合体,链表** 逻辑运算符 ** &,|,^,~,<...

  • 2018-11-28

    ArrayList去除自定义对象元素重复3 LinkedList数据结构分析链表:多个节点组成的节点:是包含自己和...

网友评论

      本文标题:自定义链表

      本文链接:https://www.haomeiwen.com/subject/xksykctx.html