簡體   English   中英

鏈表的遞歸插入方法

[英]Recursive insert-method for a linked list

我正在學習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);

由於您實際上從未更改過要通過引用傳遞的參數,因此根本無法完全通過引用傳遞它們。 您需要認識到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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM