public void DecreaseKey(int vertex, int weight) { var node = new AdjListNode(weight, vertex); var index = -1; for (var i = 0; i < this._size; i++) { if (this.arr[i].Vertex == vertex) { this.arr[i].Weight = weight; index = i; } } var parentOfI = GetParent(index); if (parentOfI < 0) { return; } while (index >= 0 && this.arr[index].Weight < this.arr[parentOfI].Weight) { this.arr[index] = this.arr[parentOfI]; index = parentOfI; parentOfI = GetParent(parentOfI); if (parentOfI < 0) { break; } } this.arr[index] = node; }
public void InsertKey(int vertex, int weight) { var node = new AdjListNode(weight, vertex); this.arr[this._size] = node; this._size++; var i = this._size - 1; var parentOfI = GetParent(i); if (parentOfI < 0) { return; } while (i >= 0 && this.arr[i].Weight < this.arr[parentOfI].Weight) { this.arr[i] = this.arr[parentOfI]; i = parentOfI; parentOfI = GetParent(parentOfI); if (parentOfI < 0) { break; } } this.arr[i] = node; }
public void AddEdge(int source, int destination, int weight) { var node = new AdjListNode(weight, destination); _adjList[source].AddLast(node); }