Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
Algorithms.PriorityQueueB< T > Class Template Reference
Inheritance diagram for Algorithms.PriorityQueueB< T >:
Algorithms.IPriorityQueue< T >

Public Member Functions

 PriorityQueueB ()
 
 PriorityQueueB (IComparer< T > comparer)
 
 PriorityQueueB (IComparer< T > comparer, int capacity)
 
int Push (T item)
 
Pop ()
 
void Update (int i)
 
Peek ()
 
void Clear ()
 
void RemoveLocation (T item)
 
int Push (T item)
 
Pop ()
 
Peek ()
 
void Update (int i)
 

Protected Member Functions

void SwitchElements (int i, int j)
 
virtual int OnCompare (int i, int j)
 

Protected Attributes

List< T > InnerList = new List<T>()
 
IComparer< T > mComparer
 

Properties

int Count [get]
 
this[int index] [get, set]
 

Detailed Description

Definition at line 6 of file PriorityQueueB.cs.

Constructor & Destructor Documentation

◆ PriorityQueueB() [1/3]

Definition at line 27 of file PriorityQueueB.cs.

28 {
29 mComparer = Comparer<T>.Default;
30 }

References Algorithms.PriorityQueueB< T >.mComparer.

◆ PriorityQueueB() [2/3]

Algorithms.PriorityQueueB< T >.PriorityQueueB ( IComparer< T >  comparer)
inline

Definition at line 32 of file PriorityQueueB.cs.

33 {
34 mComparer = comparer;
35 }

References Algorithms.PriorityQueueB< T >.mComparer.

◆ PriorityQueueB() [3/3]

Algorithms.PriorityQueueB< T >.PriorityQueueB ( IComparer< T >  comparer,
int  capacity 
)
inline

Definition at line 37 of file PriorityQueueB.cs.

38 {
39 mComparer = comparer;
40 InnerList.Capacity = capacity;
41 }

References Algorithms.PriorityQueueB< T >.mComparer.

Member Function Documentation

◆ Clear()

void Algorithms.PriorityQueueB< T >.Clear ( )
inline

Definition at line 148 of file PriorityQueueB.cs.

149 {
150 InnerList.Clear();
151 }

References Algorithms.PriorityQueueB< T >.InnerList.

Referenced by Algorithms.PathFinder._FindPath().

◆ OnCompare()

virtual int Algorithms.PriorityQueueB< T >.OnCompare ( int  i,
int  j 
)
inlineprotectedvirtual

◆ Peek()

T Algorithms.PriorityQueueB< T >.Peek ( )
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 139 of file PriorityQueueB.cs.

140 {
141 if (InnerList.Count > 0)
142 {
143 return InnerList[0];
144 }
145 return default(T);
146 }

References Algorithms.PriorityQueueB< T >.InnerList.

◆ Pop()

T Algorithms.PriorityQueueB< T >.Pop ( )
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 72 of file PriorityQueueB.cs.

73 {
74 T result = InnerList[0];
75 int num = 0;
76 InnerList[0] = InnerList[InnerList.Count - 1];
77 InnerList.RemoveAt(InnerList.Count - 1);
78 while (true)
79 {
80 int num2 = num;
81 int num3 = 2 * num + 1;
82 int num4 = 2 * num + 2;
83 if (InnerList.Count > num3 && OnCompare(num, num3) > 0)
84 {
85 num = num3;
86 }
87 if (InnerList.Count > num4 && OnCompare(num, num4) > 0)
88 {
89 num = num4;
90 }
91 if (num == num2)
92 {
93 break;
94 }
95 SwitchElements(num, num2);
96 }
97 return result;
98 }
void SwitchElements(int i, int j)
virtual int OnCompare(int i, int j)

References Algorithms.PriorityQueueB< T >.InnerList, Algorithms.PriorityQueueB< T >.OnCompare(), and Algorithms.PriorityQueueB< T >.SwitchElements().

Referenced by Algorithms.PathFinder._FindPath().

◆ Push()

int Algorithms.PriorityQueueB< T >.Push ( item)
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 55 of file PriorityQueueB.cs.

56 {
57 int num = InnerList.Count;
58 InnerList.Add(item);
59 while (num != 0)
60 {
61 int num2 = (num - 1) / 2;
62 if (OnCompare(num, num2) >= 0)
63 {
64 break;
65 }
66 SwitchElements(num, num2);
67 num = num2;
68 }
69 return num;
70 }

References Algorithms.PriorityQueueB< T >.InnerList, item, Algorithms.PriorityQueueB< T >.OnCompare(), and Algorithms.PriorityQueueB< T >.SwitchElements().

Referenced by Algorithms.PathFinder._FindPath().

◆ RemoveLocation()

void Algorithms.PriorityQueueB< T >.RemoveLocation ( item)
inline

Definition at line 153 of file PriorityQueueB.cs.

154 {
155 int num = -1;
156 for (int i = 0; i < InnerList.Count; i++)
157 {
158 if (mComparer.Compare(InnerList[i], item) == 0)
159 {
160 num = i;
161 }
162 }
163 if (num != -1)
164 {
165 InnerList.RemoveAt(num);
166 }
167 }

References Algorithms.PriorityQueueB< T >.InnerList, item, and Algorithms.PriorityQueueB< T >.mComparer.

◆ SwitchElements()

void Algorithms.PriorityQueueB< T >.SwitchElements ( int  i,
int  j 
)
inlineprotected

◆ Update()

void Algorithms.PriorityQueueB< T >.Update ( int  i)
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 100 of file PriorityQueueB.cs.

101 {
102 int num = i;
103 while (num != 0)
104 {
105 int num2 = (num - 1) / 2;
106 if (OnCompare(num, num2) >= 0)
107 {
108 break;
109 }
110 SwitchElements(num, num2);
111 num = num2;
112 }
113 if (num < i)
114 {
115 return;
116 }
117 while (true)
118 {
119 int num3 = num;
120 int num4 = 2 * num + 1;
121 int num2 = 2 * num + 2;
122 if (InnerList.Count > num4 && OnCompare(num, num4) > 0)
123 {
124 num = num4;
125 }
126 if (InnerList.Count > num2 && OnCompare(num, num2) > 0)
127 {
128 num = num2;
129 }
130 if (num != num3)
131 {
132 SwitchElements(num, num3);
133 continue;
134 }
135 break;
136 }
137 }

References Algorithms.PriorityQueueB< T >.InnerList, Algorithms.PriorityQueueB< T >.OnCompare(), and Algorithms.PriorityQueueB< T >.SwitchElements().

Member Data Documentation

◆ InnerList

◆ mComparer

Property Documentation

◆ Count

int Algorithms.PriorityQueueB< T >.Count
get

Definition at line 12 of file PriorityQueueB.cs.

Referenced by Algorithms.PathFinder._FindPath().

◆ this[int index]

T Algorithms.PriorityQueueB< T >.this[int index]
getset

Definition at line 14 of file PriorityQueueB.cs.

15 {
16 get
17 {
18 return InnerList[index];
19 }
20 set
21 {
22 InnerList[index] = value;
23 Update(index);
24 }
25 }

The documentation for this class was generated from the following file: