链表是一种线性表,但是并不是安装线性顺序存储数据,而是在每一个节点存到下一个节点的指针。
在链表中,我们会使用到递归算法,它是直接或者间接调用自身算法的过程,往往使算法的描述简洁并且易于理解。链表可以插入、删添操作。
public class Lianbiao
{
public static void main(String[] args)
{
NodeManager nm=new NodeManager();
nm.addNode("1");
nm.addNode("2");
nm.addNode("3");
nm.addNode("4");
nm.addNode("5");
nm.printNode();
nm.delNode("4");
nm.printNode();
}
}
`
//节点管理类
class NodeManager
{
privae 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);
}
}
pubic void printNode()
{
if(root!=null)
{
System.out.print(root.getName()+"->")
root.print();
System.out.println();
}
}
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(String name)
{
if(this.next!=null)
{
System.out.print(root.next.getName()+"->");
root.next.print();
}
}
}
}