Macaulay2 Engine
Loading...
Searching...
No Matches

◆ merge()

s_pair * s_pair_heap::merge ( s_pair * f,
s_pair * g ) const
private

Definition at line 123 of file spair.cpp.

124{
125 // Sort in ascending degree order, then ascending monomial order
126 if (g == nullptr) return f;
127 if (f == nullptr) return g;
128 s_pair head;
129 s_pair *result = &head;
130 while (1) switch (compare(f, g))
131 {
132 case 1:
133 result->next = g;
134 result = result->next;
135 g = g->next;
136 if (g == nullptr)
137 {
138 result->next = f;
139 return head.next;
140 }
141 break;
142 case -1:
143 case 0:
144 result->next = f;
145 result = result->next;
146 f = f->next;
147 if (f == nullptr)
148 {
149 result->next = g;
150 return head.next;
151 }
152 break;
153 }
154}
int compare(s_pair *f, s_pair *g) const
Definition spair.cpp:66
VALGRIND_MAKE_MEM_DEFINED & result(result)
s_pair * next
Definition spair.hpp:90

References compare(), s_pair::next, and result().

Referenced by insert(), insert(), and sort_list().