链表数据结构实现(应用递归算法理念)
package 算法_algorithm;
/*
* 链表数据结构
* 适合用于频繁的进行添加,插入,删除操作
*/
public class linked {
public static void main(String[] args) {
NodeManager manager=new NodeManager();
manager.addNode("1");//增加节点
manager.addNode("2");//增加节点
manager.addNode("3");//增加节点
manager.addNode("4");//增加节点
manager.addNode("5");//增加节点
manager.delNode("4");//删除节点
manager.printNode();//打印所有节点
}
}
//**************NodeNanager:*****************
class NodeManager{
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.next;
}else {
root.del(name);
}
}
//打印所有节点
public void printNode() {
if(root!=null) {
System.out.print(root.getName()+"->");
}
root.print();
}
//*****************************
//每一个节点对象
class Node{
private String name;
private Node next;//当前节点的下一个节点
public String getName() {
return name;
}
public Node(String name) {
this.name=name;
}
//*******自己对外部节点操作的方法*****
//添加节点
public void add(String name) {
if(this.next==null) {
this.next=new Node(name);
}else {
this.next.add(name);//递归
}
}
//删除节点
public void del(String name) {
if(this.next!=null) {
if(this.next.name.equals(name)) {
this.next=this.next.next;
}else {
this.next.del(name);
}
}
}
//打印所有节点
public void print() {
if(this.next!=null) {
System.out.print(this.next.getName()+"->");
this.next.print();
}
}
//*****************************
}
}