链表的递归插入方法

时间:2014-06-10 15:21:36

标签: c# .net

我正在学习C#,并为链表制作了一个递归插入方法:

public static int recursiveInsert(ref int value, ref MyLinkedList list) {
    if (list == null)
        return new MyLinkedList(value, null);
    else {
        list.next = recursiveInsert(ref int value, ref list.next);
        return list;
    }
}

如何修改此方法以使递归调用如下所示:

recursiveInsert(value, ref list.next)

而不是:

list.next = recursiveInsert(ref int value, ref list.next);

1 个答案:

答案 0 :(得分:4)

由于您实际上从未改变过通过引用传递的参数,因此您根本不能通过引用传递它们。你需要认识到MyLinkedList是一个引用类型(它绝对应该是一个引用类型)意味着你没有传递对象本身的值,你传递了对它的引用,所以你可以改变那个引用,而不通过引用传递引用。)只需删除ref的所有用法(并修复你的返回类型是正确的),然后你就完成了:

public static MyLinkedList recursiveInsert(int value, MyLinkedList list)
{
    if (list == null)
        return new MyLinkedList(value, null);
    else
    {
        list.next = recursiveInsert(value, list.next);
        return list;
    }
}