public class ListNode {
int value;//存储节点值
ListNode next;//存储下一个节点的地址
ListNode temp;//临时变量,用来做指针
ListNode(){}
ListNode(int value){
this.value = value;
}
public void add(int newValue){
//每次调用都new一个新的节点
ListNode newNode = new ListNode(newValue);
if(this.next == null){
//this代指掉用这个方法的对象,此处就代表尾部节点
this.next = newNode;//将尾部节点与新节点相连
return;
}else{
// 递归调用
this.next.add(newValue);
}
}
public void prinf(){
// 对象初始化时会将value赋值为0,所以头部节点算空this.value=0算是个无效数据
// System.out.print(this.value);
temp = this.next;
// 往后看两个位置
if (temp.next !=null){
//例如:head--->(1,next)----->(2,next)--->(3,next)
//temp指向节点(1,next)
//temp.next指向节点(2,next),不为空
//输出节点(1,next)的value,value=1
System.out.print(temp.value+",");
//递归调用prinf()
//进入递归后,的temp指向了节点(2,next),并判断是否是尾部节点
//之后以此类推...
temp.prinf();
}else{
//以此例讲,递归进入第二次temp指向(3,next)节点,是尾部节点输出不加“,”
System.out.println(temp.value);
}
}
}
```测试类
public class LeetCode {
public static void main(String[] args) {
ListNode l1 = new ListNode();
l1.add(1);
l1.add(2);
l1.add(3);
l1.prinf();
}
Java_单链表的编写
最新推荐文章于 2024-07-27 17:56:15 发布