public void AddSort(string inf) { if (head != null) { MyNodeStr q = head; int k = string.CompareOrdinal(inf, q.inf); // -1:s1<s2 0:s1=s2 1:s1>s2 if (k <= 0) if (k == 0) q.AddCount(); else // вставить перед головой { MyNodeStr p = new MyNodeStr(inf, q); head = p; } else { MyNodeStr r; // поиск: inf >= q.inf do { r = q; q = q.next; if (q != null) k = string.CompareOrdinal(q.inf, inf); } while ((q != null) && (k < 0)); if (q != null) if (k == 0) q.AddCount(); else // между r и q { MyNodeStr p = new MyNodeStr(inf, q); r.next = p; } else // за r { MyNodeStr p = new MyNodeStr(inf, null); r.next = p; } } } else head = new MyNodeStr(inf, null); // список пуст count++; }
// Конструктор public MyNodeStr(string inf, MyNodeStr next) { this.inf = inf; this.next = next; this.count = 1; }