// "обёртка" для функции Add public void Add(double value, string word) { if (top == null) { top = new Node(value, word, null, null, null); return; } Add(top, value, word); }
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; } }
private void Del(ref Node r) { if (r.right != null) Del(ref r.right); else { q.key = r.key; q = r; r = r.left; } }
// рекурсивная функция добавления элемента со значением 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); } }
//добавление 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]); } }
public Node(string key, int data, Node next) { this.key = key; this.data = data; this.next = next; }
private string ToString(Node n) { if (n == null) { return ""; } else { return "[" + n.Value + "] " + ToString (n.Next); } }
public int Dequeue() { Node temp = Front; Front = temp.Next; return temp.Value; }
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); } }
// конструктор 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; }
// рекурсивная функция поиска элемента по значению (возвращает 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); }
// рекурсивная функция поиска элемента по значению (возвращает элемент) 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); }