[javase]链表的循序渐进了解

来源:互联网 发布:川普 好莱坞 知乎 编辑:程序博客网 时间:2024/06/05 19:44
/**
 * 最原始的链表
 * */
public class List2 {
public static void main(String[] args) {
//为了减少客户端的细节处操作 现在交由一个link类来进行链表的数据插入和取出(输出)
Link link=new Link();//首先创建一个Link对象
link.add("我是");//通过link添加数据
link.add("至尊");//通过link添加数据
link.add("戒撸");//通过link添加数据
link.add("之王");//通过link添加数据
link.print();//打印数据,由于一个link操作一个node 所以不需要传参
}
}
class Link{//负责数据的插入和输出,要操作node1
private Node1 root;//根节点
public void add(String data) {
Node1 newNode=new Node1(data);//首先初始化一个对象存放值,后面会找到适当的位置存放它
if(this.root==null) {//当前节点为空,就把newNode塞给它
this.root=newNode;
}
else {
this.root.findNode(newNode);//这里代码要找到null的节点,吧newNode塞给它,找null的任务交回给node1类,方法名为findNode
}
}
public void print() {//打印链表内容,需要根节点
System.out.println(this.root.getData());

while(this.root.getNext()!=null) {
System.out.println(this.root.getNext().getData());
this.root=this.root.getNext();
}
}
}
class Node1{//节点类
private String data;//存放数据
private Node1 next;//next节点
public Node1(String data) {//带参构造方法
this.data=data;
}
public void setData(String data) {
this.data=data;
}
public String getData() {
return this.data;
}
public void setNext(Node1 node) {
this.next=node;
}
public Node1 getNext() {
return this.next;
}
public void findNode(Node1 newNode) {//找到空的位置,吧newNode塞进去,这时候newNode已经连带新的值了,不用考虑setData了
if(this.next==null) {//判断next是不是为空,是就把newNode塞给next
this.setNext(newNode);
}
else {
this.next.findNode(newNode);
}
}
}















原创粉丝点击