Priority queue: Difference between revisions
Content added Content deleted
imported>Pjfarley3 m (Remove DYNAM compiler option from PROCESS compiler directives leading each program.) |
Nima.trueway (talk | contribs) m (→{{header|Zig}}) |
||
Line 8,975: | Line 8,975: | ||
/// fn(T, T) bool |
/// fn(T, T) bool |
||
const Comparator = struct { |
const Comparator = struct { |
||
fn maxCompare(a: Task, b: Task) |
fn maxCompare(_: void, a: Task, b: Task) std.math.Order { |
||
return a.priority |
return std.math.order(a.priority, b.priority); |
||
} |
} |
||
fn minCompare(a: Task, b: Task) |
fn minCompare(_: void, a: Task, b: Task) std.math.Order { |
||
return a.priority |
return std.math.order(a.priority, b.priority); |
||
} |
} |
||
}; |
}; |
||
Line 8,987: | Line 8,987: | ||
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
||
defer arena.deinit(); |
defer arena.deinit(); |
||
const allocator = arena.allocator(); |
|||
⚫ | |||
⚫ | |||
defer pq.deinit(); |
defer pq.deinit(); |
||
Line 8,997: | Line 8,996: | ||
try pq.add(Task.init(1, "Solve RC tasks")); |
try pq.add(Task.init(1, "Solve RC tasks")); |
||
try pq.add(Task.init(2, "Tax returns")); |
try pq.add(Task.init(2, "Tax returns")); |
||
testing.expectEqual(pq.count(), 5); |
try testing.expectEqual(pq.count(), 5); |
||
std.debug.print("\n", .{}); |
std.debug.print("\n", .{}); |
||
Line 9,004: | Line 9,003: | ||
while (pq.count() != 0) { |
while (pq.count() != 0) { |
||
const task = pq.remove(); |
const task = pq.remove(); |
||
std.debug.print("Executing: |
std.debug.print("Executing: {s} (priority {d})\n", .{ task.name, task.priority }); |
||
} |
} |
||
std.debug.print("\n", .{}); |
std.debug.print("\n", .{}); |
||
Line 9,012: | Line 9,011: | ||
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
||
defer arena.deinit(); |
defer arena.deinit(); |
||
const allocator = arena.allocator(); |
|||
⚫ | |||
⚫ | |||
defer pq.deinit(); |
defer pq.deinit(); |
||
Line 9,022: | Line 9,020: | ||
try pq.add(Task.init(1, "Solve RC tasks")); |
try pq.add(Task.init(1, "Solve RC tasks")); |
||
try pq.add(Task.init(2, "Tax returns")); |
try pq.add(Task.init(2, "Tax returns")); |
||
testing.expectEqual(pq.count(), 5); |
try testing.expectEqual(pq.count(), 5); |
||
std.debug.print("\n", .{}); |
std.debug.print("\n", .{}); |
||
Line 9,029: | Line 9,027: | ||
while (pq.count() != 0) { |
while (pq.count() != 0) { |
||
const task = pq.remove(); |
const task = pq.remove(); |
||
std.debug.print("Executing: |
std.debug.print("Executing: {s} (priority {d})\n", .{ task.name, task.priority }); |
||
} |
} |
||
std.debug.print("\n", .{}); |
std.debug.print("\n", .{}); |
||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||