Сделать общий класс очереди приоритетов в C#

В этом примере показано, как создать общий класс очереди приоритетов. Общий класс похож на обычный класс, за исключением того, что он может принимать один или несколько параметров, которые являются типами. Затем класс может использовать этот тип для определения переменных и параметров, имеющих этот тип.

В этом примере создается общий класс PriorityQueue, который позволяет связать приоритет с объектами любого заданного типа. Его метод Enqueue добавляет элемент в очередь. Его метод Dequeue возвращает элемент с наибольшим приоритетом из очереди и возвращает его.

В следующем коде показан общий PriorityQueue класс.

Часть & lt; T & gt; объявления класса указывает, что класс принимает параметр типа с именем T. Внутри класса вы можете использовать символ T для представления типа данных, назначенного классу, когда основная программа его создает.

Класс начинается с определения двух списков для хранения элементов и их приоритетов. Обратите внимание, как код использует & lt; T & gt; для создания List, содержащего любой тип данных, который использовался для создания объекта PriorityQueue. В другом списке просто содержатся значения int.

Свойство NumItems возвращает количество элементов, находящихся в очереди.

Метод Enqueue добавляет элемент в список Values и его приоритет в список Priorities. Обратите внимание, что параметр new_item имеет тип T.

Метод Dequeue находит элемент с наибольшим приоритетом, устанавливает возвращаемые значения для возврата элемента и его приоритета и удаляет их из своих списков.

Следующий код показывает, как основная программа создает свой PriorityQueue.

После создания очереди, это легко. Следующий код показывает, как программа добавляет к нему элемент.

Следующий код показывает, как программа удаляет элемент из очереди.

См. пример кода для других деталей.

Преимущество общих классов заключается в том, что они могут легко манипулировать объектами любого типа данных. Например, этот общий PriorityQueue класс может содержать string s, Employee s, Order s или что угодно else, с которым вы можете захотеть связать приоритет.

Источник: http://csharphelper.com/blog/2015/02/make-a-generic-priority-queue-class-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *