提交 f1e87733 编写于 作者: D Daniel Micay 提交者: Brian Anderson

add an empty PriorityQueue constructor

上级 02e804bb
......@@ -105,8 +105,11 @@ fn replace(&mut self, item: T) -> T {
q.to_vec()
}
/// Create an empty PriorityQueue
static pure fn new() -> PriorityQueue<T> { PriorityQueue{data: ~[],} }
/// Create a PriorityQueue from a vector (heapify)
static pub pure fn from_vec(xs: ~[T]) -> PriorityQueue<T> {
static pure fn from_vec(xs: ~[T]) -> PriorityQueue<T> {
let mut q = PriorityQueue{data: xs,};
let mut n = q.len() / 2;
while n > 0 {
......@@ -168,7 +171,7 @@ fn replace(&mut self, item: T) -> T {
mod tests {
use sort::merge_sort;
use core::cmp::le;
use priority_queue::PriorityQueue::from_vec;
use priority_queue::PriorityQueue::{from_vec, new};
#[test]
fn test_top_and_pop() {
......@@ -279,30 +282,27 @@ fn test_to_vec() {
#[test]
#[should_fail]
#[ignore(cfg(windows))]
fn test_empty_pop() { let mut heap = from_vec::<int>(~[]); heap.pop(); }
fn test_empty_pop() { let mut heap = new::<int>(); heap.pop(); }
#[test]
fn test_empty_maybe_pop() {
let mut heap = from_vec::<int>(~[]);
let mut heap = new::<int>();
assert heap.maybe_pop().is_none();
}
#[test]
#[should_fail]
#[ignore(cfg(windows))]
fn test_empty_top() { let empty = from_vec::<int>(~[]); empty.top(); }
fn test_empty_top() { let empty = new::<int>(); empty.top(); }
#[test]
fn test_empty_maybe_top() {
let empty = from_vec::<int>(~[]);
let empty = new::<int>();
assert empty.maybe_top().is_none();
}
#[test]
#[should_fail]
#[ignore(cfg(windows))]
fn test_empty_replace() {
let mut heap = from_vec::<int>(~[]);
heap.replace(5);
}
fn test_empty_replace() { let mut heap = new(); heap.replace(5); }
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册