Table of Contents

Class AlternativePriorityQueue<TPriority, TData>

Namespace
NetTopologySuite.Utilities
Assembly
NetTopologySuite.dll

An alternative implementation of the priority queue abstract data type. This allows us to do more than PriorityQueue<T>, which we got from JTS. Ultimately, this queue enables scenarios that have more favorable execution speed characteristics at the cost of less favorable memory and usability characteristics.

public sealed class AlternativePriorityQueue<TPriority, TData> : IEnumerable<PriorityQueueNode<TPriority, TData>>, IEnumerable

Type Parameters

TPriority

The type of the priority for each queue node.

TData

The type of data stored in the queue.

Inheritance
AlternativePriorityQueue<TPriority, TData>
Implements
IEnumerable<PriorityQueueNode<TPriority, TData>>
Inherited Members

Remarks

When enumerating over the queue, note that the elements will not be in sorted order. To get at the elements in sorted order, use the copy constructor and repeatedly Dequeue() elements from it.

Constructors

AlternativePriorityQueue()

Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.

public AlternativePriorityQueue()

AlternativePriorityQueue(AlternativePriorityQueue<TPriority, TData>)

Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.

public AlternativePriorityQueue(AlternativePriorityQueue<TPriority, TData> copyFrom)

Parameters

copyFrom AlternativePriorityQueue<TPriority, TData>

The AlternativePriorityQueue<TPriority, TData> to copy from.

Exceptions

ArgumentNullException

copyFrom is null.

AlternativePriorityQueue(IComparer<TPriority>)

Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.

public AlternativePriorityQueue(IComparer<TPriority> priorityComparer)

Parameters

priorityComparer IComparer<TPriority>

The IComparer<T> to use to compare priority values, or null to use the default comparer for the type.

AlternativePriorityQueue(int)

Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.

public AlternativePriorityQueue(int capacity)

Parameters

capacity int

The initial queue capacity.

Exceptions

ArgumentOutOfRangeException

capacity is less than 1.

AlternativePriorityQueue(int, IComparer<TPriority>)

Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.

public AlternativePriorityQueue(int capacity, IComparer<TPriority> priorityComparer)

Parameters

capacity int

The initial queue capacity.

priorityComparer IComparer<TPriority>

The IComparer<T> to use to compare priority values, or null to use the default comparer for the type.

Exceptions

ArgumentOutOfRangeException

capacity is less than 1.

Properties

Count

Gets the number of nodes currently stored in this queue.

public int Count { get; }

Property Value

int

Head

Gets the node at the head of the queue. This is the node whose TPriority compares less than or equal to the priority of all other nodes in the queue.

public PriorityQueueNode<TPriority, TData> Head { get; }

Property Value

PriorityQueueNode<TPriority, TData>

Methods

ChangePriority(PriorityQueueNode<TPriority, TData>, TPriority)

Changes the priority of the given node.

public void ChangePriority(PriorityQueueNode<TPriority, TData> node, TPriority priority)

Parameters

node PriorityQueueNode<TPriority, TData>

The node whose priority to change.

priority TPriority

The new priority for the node.

Exceptions

ArgumentNullException

node is null.

Clear()

Removes all nodes from this queue.

public void Clear()

Contains(PriorityQueueNode<TPriority, TData>)

Determines whether the given node is contained within this queue.

public bool Contains(PriorityQueueNode<TPriority, TData> node)

Parameters

node PriorityQueueNode<TPriority, TData>

The node to locate in the queue.

Returns

bool

true if node is found in the queue, otherwise false.

Dequeue()

Removes and returns the head of the queue.

public PriorityQueueNode<TPriority, TData> Dequeue()

Returns

PriorityQueueNode<TPriority, TData>

The removed element.

Enqueue(PriorityQueueNode<TPriority, TData>, TPriority)

Adds a given node to the queue with the given priority.

public void Enqueue(PriorityQueueNode<TPriority, TData> node, TPriority priority)

Parameters

node PriorityQueueNode<TPriority, TData>

The node to add to the queue.

priority TPriority

The priority for the node.

Exceptions

ArgumentNullException

node is null.

GetEnumerator()

public IEnumerator<PriorityQueueNode<TPriority, TData>> GetEnumerator()

Returns

IEnumerator<PriorityQueueNode<TPriority, TData>>

Remove(PriorityQueueNode<TPriority, TData>)

Removes the given node from this queue if it is present.

public bool Remove(PriorityQueueNode<TPriority, TData> node)

Parameters

node PriorityQueueNode<TPriority, TData>

The node to remove if present.

Returns

bool

A value indicating whether the node was removed.