public void Push(T item)\r
{\r
int currentPos = this.list.Count;\r
- this.list.Add(item); // dummy\r
+ this.list.Add(default(T));\r
\r
while (currentPos != 0)\r
{\r
T parent = this.list[parentPos];\r
\r
if (parent.CompareTo(item) <= 0) break;\r
+\r
this.list[currentPos] = parent;\r
currentPos = parentPos;\r
}\r
private void DeleteRoot()\r
{\r
int tailPos = this.list.Count - 1;\r
- T current = this.list[tailPos];\r
+ T current = this.list[tailPos]; // final\r
this.list.RemoveAt(tailPos);\r
if (tailPos == 0) return; // empty\r
tailPos--;\r
}\r
\r
if (current.CompareTo(child) < 0) break;\r
+\r
this.list[currentPos] = child;\r
currentPos = childPos;\r
}\r