链表的实现
在链表数据结构中,我们需要使用到递归算法。
递归算法是一种直接或间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述间接而且容易理解。
但是递归必须要有出口,否则会递归过多造成内存溢出
首先构造一个节点类
/**
* 节点类
* @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();
}
}
测试结果
以上纯属个人见解, 如有不足之处希望有高人指出, 定感激不尽, 如有喜欢交流学习经验请给我留言谢谢.
原创文章, 转载请注明出处