请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我这个递归方法有没有哪里可以改进的?

关于链表add方法的递归实现

在public class LinkedList_Re<A> {

    private class Node{
        Node next ;
        A a ;
        public Node(Node next , A a){
            this.next = next ;
            this.a = a ;
        }
        public Node(A a){
            this(null , a) ;
        }
        public Node(){
            this(null , null) ;
        }
        public String toString(){
            return a.toString() ;
        }
    }

    private class num{
        int i = 0 ;
    }

    private Node dummyHead ;
    private int size ;
    private num  n = new num();

    public LinkedList_Re(){
        dummyHead = new Node() ;
        size = 0 ;
    }

    public int getSize(){
        return size ;
    }

    public boolean isEmpty(){
        return size == 0 ;
    }

    public void add(int index , A a){
        if (index < 0 || index > size)
            throw new IllegalArgumentException("Index is illegal!") ;
        dummyHead = add(dummyHead , index , a) ;
        size ++ ;
    }
    private Node add(Node node , int index , A a){
        n.i = index ;
        Node prev = node ;
        if (n.i == 0){
            prev.next = new Node(prev.next , a) ;
        }
        if (prev.next == null){
            return prev ;
        }
        n.i = n.i - 1 ;
        prev.next = add(prev.next , n.i , a) ;
        return prev ;
    }

    public static void main(String[] args) {
        LinkedList_Re one = new LinkedList_Re() ;
        one.add(0 , 1) ;
        System.out.println(one.dummyHead.next.a);
    }
}

因为递归的时候不能用index – ,我就又定义了一个私有类num,将index赋值给num中的int i ,通过操作 i 来实现index – ,总感觉挺麻烦的,有没有地方可以改进的?

正在回答

1回答

我在这个课程的补充代码中,实现了一版基于递归的链表,可以参考:https://github.com/liuyubobobo/Play-with-Data-Structures/blob/master/05-Recursion/Optional-01-Recursive-LinkedList/src/LinkedListR.java


加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 爱西瓜同志 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-04-09 07:44:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信