2014-12-27 31 views
-1

我想將元素添加到鏈接列表中,以便列表保持排序狀態。我寫了這個函數。他有一個應該包含的地方,但我不知道如何插入元素。將元素添加到有序列表中

public void AddSorted(int num) 
{ 
    Node n = new Node(num); 
    Node curr = _first; 
    Node curr1 = _first.Link; 
    while (curr1.Data < n.Data && curr1 != null) 
    { 
     curr = curr.link; 
     curr1= curr1.link; 
    } 
    // how to add element ??? 
} 
+0

這要看情況。單鏈接還是雙鏈接? – harold 2014-12-27 15:46:39

+0

該列表是單個鏈接 – Mahdi 2014-12-27 19:55:53

回答

0

在親愛的朋友的幫助下。 我可以寫這個函數。 下面你可以看到代碼:

public void AddSorted(int num) { Node n = new Node(num); Node curr = _first; if (_first == null || _first.Data >= n.Data) { n.Link = _first; _first = n; } else { while (curr.Link != null && curr.Link.Data < n.Data) { curr = curr.Link; } n.Link = curr.Link; curr.Link = n; }

1

您已經提供了絕對沒有關於您的LinkedList類的上下文,所以我只能做出有根據的猜測。

根據我對上述代碼的理解,在遍歷到想要插入新位置Node的位置後,需要將鏈接Node curr1(這是最後一個節點)設置爲新節點對象。

Node temp = curr1.Link; // store next Node in temporary object 
curr1.Link = n; // Insert new Node 

記住,你需要設置新節點在鏈表的下一個節點的鏈接,以便繼續LinkedList的(如果新插入的節點不是最後一個):

n.Link = temp; 

如果我理解了你的代碼,請讓我知道,然後我可以相應地更改我的答案。