Beispiel #1
0
 // "обёртка" для функции Add
 public void Add(double value, string word)
 {
     if (top == null)
     {
         top = new Node(value, word, null, null, null);
         return;
     }
     Add(top, value, word);
 }
Beispiel #2
0
 public void Enqueue(int value)
 {
     if (Back == null) {
         Back = new Node (value);
         Front = Back;
     } else {
         Node n = new Node (value);
         Back.Next = n;
         Back = n;
     }
 }
Beispiel #3
0
 private void Del(ref Node r)
 {
     if (r.right != null)
         Del(ref r.right);
     else
     {
         q.key = r.key;
         q = r;
         r = r.left;
     }
 }
Beispiel #4
0
 // рекурсивная функция добавления элемента со значением val
 private void Add(Node p, double val, string word)
 {
     if (p.key < val)
     {
         if (p.right == null)
             p.right = new Node(val, word, null, null, p);
         else
             Add(p.right, val, word);
     }
     else
     {
         if (p.left == null)
             p.left = new Node(val, word, null, null, p);
         else
             Add(p.left, val, word);
     }
 }
Beispiel #5
0
        //добавление
        public void Add(int value, string key)
        {
            int h = GetHash(key);
            Node p = array[h];
            bool ok = false;
            while ((p != null) && (!ok))
                if (p.key == key)
                {
                    ok = true;
                    p.data = value;
                }
                else p = p.next;

            if (!ok)
            {
                if (array[h] == null) array[h] = new Node(key, value, null);
                else array[h] = new Node(key, value, array[h]);
            }
        }
Beispiel #6
0
 public Node(string key, int data, Node next)
 {
     this.key = key;
     this.data = data;
     this.next = next;
 }
Beispiel #7
0
 private string ToString(Node n)
 {
     if (n == null) {
         return "";
     } else {
         return "[" + n.Value + "] " + ToString (n.Next);
     }
 }
Beispiel #8
0
 public int Dequeue()
 {
     Node temp = Front;
     Front = temp.Next;
     return temp.Value;
 }
Beispiel #9
0
 private void Del0(int key, ref Node p)
 {
     if (p != null)
         if (key < p.key)
             Del0(key, ref p.left);
         else
             if (key > p.key)
                 Del0(key, ref p.right);
             else
             {
                 q = p;
                 if (q.right == null)
                     p = q.left;
                 else
                     if (q.left == null)
                         p = q.right;
                     else
                         Del(ref q.left);
             }
 }
Beispiel #10
0
 // конструктор
 public Node(double key, string data, Node left, Node right, Node parent)
 {
     this.key = key;
     this.data = data;
     this.left = left;
     this.right = right;
     this.parent = parent;
 }
Beispiel #11
0
 // рекурсивная функция поиска элемента по значению (возвращает true/false)
 private bool SearchBool(ref Node t, double k)
 {
     if ((top == null) || (k != t.key)) return false;
     if ((t == null) || (k == t.key))
         return true;
     else
         if (k < t.key)
             return SearchBool(ref t.left, k);
         else return SearchBool(ref t.right, k);
 }
Beispiel #12
0
 // рекурсивная функция поиска элемента по значению (возвращает элемент)
 private Node Search(ref Node t, double k)
 {
     if ((t == null) || (k == t.key))
         return t;
     else
         if (k < t.key)
             return Search(ref t.left, k);
         else return Search(ref t.right, k);
 }