Java数据结构之链表的实现

来源:互联网 发布:骆驼祥子白房子知乎 编辑:程序博客网 时间:2024/05/01 20:15

链表的实现

在链表数据结构中,我们需要使用到递归算法。
递归算法是一种直接或间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述间接而且容易理解。
但是递归必须要有出口,否则会递归过多造成内存溢出

首先构造一个节点类

/** * 节点类 * @author zll */class Node {    private String name;    //指向下一个节点    public Node nextNode;    public String getName() {        return name;    }    public void add(String name) {        if (this.nextNode == null) {            this.nextNode = new Node(name);        } else {            this.nextNode.add(name);        }    }    public void del(String name){        if(this.nextNode != null){            if(this.nextNode.getName().equals(name)){                this.nextNode = this.nextNode.nextNode;            }else{                this.nextNode.del(name);            }        }    }    public void print() {        if (this.nextNode != null) {            if(this.nextNode.nextNode == null){                System.out.print(this.nextNode.getName());            }else{                System.out.print(this.nextNode.getName() + "->");            }            this.nextNode.print();        }    }    public Node(String name) {        this.name = name;    }}

定义一个节点管理类,用于管理节点,实现添加、删除和打印节点的功能

/** * 节点管理类 * @author zll */class ManagerNode {    // 定义一个根节点    private Node root;    // 添加一个节点    public void addNode(String name) {        if (root == null) {            // 如果根节点为空,就把当前节点设为根节点            root = new Node(name);        } else {            root.add(name);        }    }    //删除一个节点    public void delNode(String name){        if(root.getName().equals(name)){            root = root.nextNode;        }else{            root.del(name);        }    }    // 节点打印方法    public void printNode() {        if (root != null) {            System.out.print(root.getName() + "->");            root.print();        }    }}

测试类

/** * 链表的实现 * @author zll */public class Test {    public static void main(String[] arg0) {        ManagerNode mn = new ManagerNode();        for (int i = 1; i <=5; i++) {            mn.addNode("第" + i + "个节点");        }           mn.delNode("第1个节点");        mn.delNode("第3个节点");        mn.printNode();    }}

测试结果
这里写图片描述

以上纯属个人见解, 如有不足之处希望有高人指出, 定感激不尽, 如有喜欢交流学习经验请给我留言谢谢.

原创文章, 转载请注明出处

0 0