Added Peek() method to the priority queue classes (it's a method and not a property because it can potentially fail with an exception and a property might lead someone to not think about this possibility)
git-svn-id: file:///srv/devel/repo-conversion/nusu@79 d2e56fa2-650e-0410-a79f-9358c0239efd
This commit is contained in:
parent
7bff8c5d52
commit
f5eefc6765
|
@ -73,6 +73,12 @@ namespace Nuclex.Support.Collections {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Returns the topmost item in the queue without dequeueing it</summary>
|
||||||
|
/// <returns>The topmost item in the queue</returns>
|
||||||
|
public PriorityItemPair<PriorityType, ItemType> Peek() {
|
||||||
|
return this.internalQueue.Peek();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>Takes the item with the highest priority off from the queue</summary>
|
/// <summary>Takes the item with the highest priority off from the queue</summary>
|
||||||
/// <returns>The item with the highest priority in the list</returns>
|
/// <returns>The item with the highest priority in the list</returns>
|
||||||
public PriorityItemPair<PriorityType, ItemType> Dequeue() {
|
public PriorityItemPair<PriorityType, ItemType> Dequeue() {
|
||||||
|
|
|
@ -107,12 +107,23 @@ namespace Nuclex.Support.Collections {
|
||||||
this.heap = new ItemType[this.capacity];
|
this.heap = new ItemType[this.capacity];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Returns the topmost item in the queue without dequeueing it</summary>
|
||||||
|
/// <returns>The topmost item in the queue</returns>
|
||||||
|
public ItemType Peek() {
|
||||||
|
if(this.count == 0) {
|
||||||
|
throw new InvalidOperationException("No items queued");
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.heap[0];
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>Takes the item with the highest priority off from the queue</summary>
|
/// <summary>Takes the item with the highest priority off from the queue</summary>
|
||||||
/// <returns>The item with the highest priority in the list</returns>
|
/// <returns>The item with the highest priority in the list</returns>
|
||||||
/// <exception cref="InvalidOperationException">When the queue is empty</exception>
|
/// <exception cref="InvalidOperationException">When the queue is empty</exception>
|
||||||
public ItemType Dequeue() {
|
public ItemType Dequeue() {
|
||||||
if(count == 0)
|
if(this.count == 0) {
|
||||||
throw new InvalidOperationException("No items available to dequeue");
|
throw new InvalidOperationException("No items available to dequeue");
|
||||||
|
}
|
||||||
|
|
||||||
ItemType result = this.heap[0];
|
ItemType result = this.heap[0];
|
||||||
--this.count;
|
--this.count;
|
||||||
|
@ -150,7 +161,7 @@ namespace Nuclex.Support.Collections {
|
||||||
/// <param name="array">Array to copy the priority queue into</param>
|
/// <param name="array">Array to copy the priority queue into</param>
|
||||||
/// <param name="index">Starting index for the destination array</param>
|
/// <param name="index">Starting index for the destination array</param>
|
||||||
public void CopyTo(Array array, int index) {
|
public void CopyTo(Array array, int index) {
|
||||||
Array.Copy(heap, 0, array, index, this.count);
|
Array.Copy(this.heap, 0, array, index, this.count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user