//Constructor public HashTable(int L) { start = null; end = null; Length = 0; maxKeys = L; }
//Método que verifica si existe una cable public bool existsKey(K key) { //Revisa solo si la tabla hash no esta vacía, si lo esta devuelve false if (Length > 0) { HashNode <T, K> temp = start; //Recorre todas las llaves hasta encontrar la que se busca, si la encuentra retorna true while (temp != null) { if (temp.key.CompareTo(key) == 0) { return(true); } else { temp = temp.next; } } //Si no la encuentra retorna false return(false); } else { return(false); } }
public void Add(T value, K key) { HashNode <T, K> newnode = new HashNode <T, K>(); if (Length == 0) { newnode.key = key; newnode.value.InsertAtEnd(value); start = newnode; end = newnode; } else { if (!existsKey(key)) { newnode.key = key; newnode.value.InsertAtEnd(value); end.next = newnode; newnode.prev = end; end = end.next; } else { HashNode <T, K> temp = start; while (temp.key.CompareTo(key) != 0) { temp = temp.next; } temp.value.InsertAtEnd(value); } } Length++; }
public V GetValue(K _key) { HashNode <K, V> candidate = first; while (Comparer <K> .Default.Compare(candidate.key, _key) != 0) { candidate = candidate.NextNode; } return(candidate.value); }
private static void AddAll(IHashTable <K, V> ht, long number) { for (int i = 0; i < number; i++) { K k = (K)Convert.ChangeType(i.ToString(), typeof(K)); V v = (V)Convert.ChangeType((i + 100).ToString(), typeof(V)); HashNode <K, V> node = new HashNode <K, V>(k, v); ht.Add(node); } }
public void Add(HashNode <K, V> node) { if (first == null) { first = node; } else { last.NextNode = node; } last = node; }
public void Add(HashNode <K, V> node) { int index = GetIndexOfKey(node.key, capacity); if (values[index] != null) { Console.WriteLine("the <{0},{1}> is not added. Please change the key", node.key, node.value); } else { values[index] = node.value; } }
internal (int, string) RemoveFromStart() { if (this.head == null) { return(0, string.Empty); } var item = this.head; this.head = head.Next; return(item.Id, this.nodeMap[item.Id]); }
//Devuelve un elemento en base a una funcion public T Get(Func <T, int> comparer, K key) { if (existsKey(key)) { HashNode <T, K> temp = start; while (temp.key.CompareTo(key) != 0) { temp = temp.next; } return(temp.value.Find(comparer)); } else { return(default);
public V[] GetList() { V[] arr = new V[30]; HashNode <K, V> tmp = first; int i = 0; while (tmp != null) { arr[i] = tmp.value; tmp = tmp.NextNode; i++; } return(arr); }
internal void AddAtEnd(int id, string value) { if (this.head == null) { this.head = new HashNode(id); this.current = this.head; } else { this.current.Next = new HashNode(id); this.current = this.current.Next; } this.nodeMap[id] = value; }
public void Remove(K _key) { HashNode <K, V> candidate = first; if (Comparer <K> .Default.Compare(first.key, _key) == 0) { first = first.NextNode; return; } while (Comparer <K> .Default.Compare(candidate.NextNode.key, _key) != 0) { candidate = candidate.NextNode; } candidate.NextNode = candidate.NextNode.NextNode; }
//Inserta un nuevo elemento con cierta clave public void Add(T value, K key) { HashNode <T, K> newnode = new HashNode <T, K>(); //Inserta para el caso de ser el primer elemento en insertarse if (Length == 0) { newnode.key = key; newnode.value.InsertAtEnd(value); start = newnode; end = newnode; } else { //Si no es el primer elemento, verifíca si la clave es nueva y en caso de serlo realiza la insersion para ese caso if (!existsKey(key)) { newnode.key = key; newnode.value.InsertAtEnd(value); end.next = newnode; newnode.prev = end; end = end.next; } //Si la clave ya existe, busca la llave ya creada y realiza la insersión con caso de colisión else { HashNode <T, K> temp = start; while (temp.key.CompareTo(key) != 0) { temp = temp.next; } //En este caso la colisión se resuelve con acumulación temp.value.InsertAtEnd(value); } } Length++; }
public bool existsKey(K key) { if (Length > 0) { HashNode <T, K> temp = start; while (temp != null) { if (temp.key.CompareTo(key) == 0) { return(true); } else { temp = temp.next; } } return(false); } else { return(false); } }
public void Add(HashNode <K, V> node) { int index = GetIndexOfKey(node.key, capacity); bucket[index].Add(node); }
static public void Add(IHashTable <K, V> ht, HashNode <K, V> node) { ht.Add(node); }
public LinkedListH() { first = null; last = first; }