LinkList是链表,如果我们要实现前后两个Node有关联能相互追溯,或者要实现一个循环♻️链表,可以按照自己思路实现。
(1)仿照LinkList,创建一个链表类,包含前节点,数据,后节点。
static class ListNode{
private Integer data;
private ListNode next;
private ListNode previous;
public Integer getData() {
return data;
}
public void setData(Integer data) {
this.data = data;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode next) {
this.next = next;
}
public ListNode getPrevious() {
return previous;
}
public void setPrevious(ListNode previous) {
this.previous = previous;
}
}
(2)定义好结构后,我们就要往里面放数据,根据我们的常识,头节点肯定是没有前节点的,但是一定有后一个节点,同时后一个节点又会成为新一轮的头节点,同时设置自己的值并且继续创建后一个节点,直到尾节点,尾节点没有后一个节点,它自己就是最尾了~~
那么清晰的结构,那么肯定就是,递归~定义填充数据的方法,我这里写死从0填充到9,一共十个数据供我测试用。
private static void fullListNode(ListNode headListNode, ListNode preNode, int value) {
if (value >=10){
return;
}
int i = value;
headListNode.setPrevious(preNode);
headListNode.setData(i);
ListNode tempListNode = new ListNode();
headListNode.setNext(tempListNode);
i++;
fullListNode(headListNode.getNext(), headListNode, i);
}
然后就是Main方法:
public static void main(String[] args) {
ListNode headListNode = new ListNode();
fullListNode(headListNode, null,0);
outAllListNode(headListNode);
}
(3)遍历也是使用递归即可~不停判断是否还有下一个节点~
private static void outAllListNode(ListNode headListNode) {
if (headListNode.getNext()!=null){
System.out.println("当前节点:"+headListNode.getData()+";下一个节点的值:"+headListNode.getNext().getData());
outAllListNode(headListNode.getNext());
} else {
System.out.println("遍历完成!");
}
}
结果: