Java个人理解之链表的使用

链表的精髓就在于递归。废话不多说,直接上代码。PS:这里只有增加数据以及输出数据的功能

class Manage{
private Node root; //这里我将根节点放在管理类中,我们一切的操作都是从根节点开始的
//-----以下内部类
private class Node{//内部类,节点类
public String data;//这个就是我们具体要保存的数据
public Node next;//指向下一个节点
public Node newNode;//这个就是等于next的,新的节点
public Node(String data){//构造方法
this.data=data;
}
public  void addNode(Node newNode){
if(this.next==null){ //判断下一个节点是否为空,是空的话就将newNode的值给next
this.next=newNode;//第一次运行到这里的时候,这里的this.next就等于this.root.next,也就等于two,root=one;
}else{ //this.root.next.next =three 数据就是这样保存下来的
this.next.addNode(newNode);
}
}
public void printNode(){
if(this.next!= null){//判断下一个节点是否为空,不是空的话就打印
System.out.print("-->"+this.next.data);
this.next.printNode();//因为下个节点不是空,所以递归让下个节点自己判断下下个节点是否为空。
}
}
}
//-----以上内部类
public void add(String data){
Node newNode=new Node(data);//新节点,先把想要加的节点实例化出来
if(this.root==null){//第一次运行的时候得先判断根节点是否为空
this.root=newNode;
}else{
this.root.addNode(newNode);
}
}

public void print(){//输出数据
if(this.root!=null){
System.out.print(this.root.data);
this.root.printNode();
}
}

}
class lianbiao{
public static void main(String []args) {
Manage manage=new Manage();
manage.add("one");
manage.add("two");
manage.add("three");
manage.add("four");
manage.print();
}
}

在这个代码中,我们首先需要注意的就是对链表的分析,链表首先得有root,一切对数据的操作也都是从root开始的。这里主要就是2个类,一个是Manage管理类,用于管理节点,一个就是节点类,用来保存数据data以及指向下一个节点next。读代码的时候一定是从主函数开始,从上往下读会读不通的,顺着程序逻辑走就简单很多了。

再PS:时间有限,下次有空再把链表的操作(增删改查)给加上,这样就更加完整了。

猜你喜欢

转载自blog.csdn.net/chenxianxing/article/details/51931036