27 lines
629 B
R
27 lines
629 B
R
PriorityQueue <- function() {
|
|
keys <- values <- NULL
|
|
insert <- function(key, value) {
|
|
ord <- findInterval(key, keys)
|
|
keys <<- append(keys, key, ord)
|
|
values <<- append(values, value, ord)
|
|
}
|
|
pop <- function() {
|
|
head <- list(key=keys[1],value=values[[1]])
|
|
values <<- values[-1]
|
|
keys <<- keys[-1]
|
|
return(head)
|
|
}
|
|
empty <- function() length(keys) == 0
|
|
environment()
|
|
}
|
|
|
|
pq <- PriorityQueue()
|
|
pq$insert(3, "Clear drains")
|
|
pq$insert(4, "Feed cat")
|
|
pq$insert(5, "Make tea")
|
|
pq$insert(1, "Solve RC tasks")
|
|
pq$insert(2, "Tax return")
|
|
while(!pq$empty()) {
|
|
with(pq$pop(), cat(key,":",value,"\n"))
|
|
}
|