Exemplo n.º 1
0
        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++;
        }
Exemplo n.º 2
0
 // Конструктор
 public MyNodeStr(string inf, MyNodeStr next)
 {
     this.inf = inf;
     this.next = next;
     this.count = 1;
 }