2014-12-27 7 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

+0

Список состоит из одной ссылки – Mahdi

ответ

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, чтобы продолжить LinkedList (если вновь вставленный узел не последний):

n.Link = temp; 

Пожалуйста, дайте мне знать, если я ошибаюсь, понимая ваш код, я могу изменить свой ответ соответственно.

Смежные вопросы