package p03.递归;
public class LinkedListRecursion {
private class ListNode{
int data;
ListNode next;
}
private int size=0;
private ListNode head;
public LinkedListRecursion(){
head=new ListNode();
}
public void add(int e){
//默认在尾部添加元素
add(head,e);
}
//以当前node为头节点 添加元素e
private void add(ListNode node, int e) {
if(node.next==null){
ListNode n=new ListNode();
n.data=e;
n.next=node.next;
node.next=n;
size++;
}else{
add(node.next,e);
}
}
public int getSize(){
return size;
}
public void remove(){//默认删除最后一个元素
remove(head);
}
private ListNode remove(ListNode node) {
if(node.next==null){
return null;
}
node.next=remove(node.next);
return node;
}
@Override
public String toString() {
StringBuilder sb=new StringBuilder("[");
toString(head.next,sb);
return sb.toString();
}
private void toString(ListNode node, StringBuilder sb) {
if(node==null){
sb.append("]");
}else{
sb.append(node.data+" ");
toString(node.next,sb);
}
}
public static void main(String[] args) {
LinkedListRecursion list=new LinkedListRecursion();
list.add(1);
list.add(2);
list.add(3);
// System.out.println(list.getSize());
System.out.println(list);
list.remove();
list.remove();
list.remove();
System.out.println(list);
}
}
JAVA数据结构LinkedListRecursion(链表递归)
最新推荐文章于 2021-01-21 03:04:27 发布