-
Notifications
You must be signed in to change notification settings - Fork 130
Closed
Labels
Exercise solutionSolutions to textbook exercisesSolutions to textbook exercises
Description
Exercise 3.21
function print_queue(q) {
return head(q);
}
Exercise 3.22
function make_queue() {
let front_ptr = null;
let rear_ptr = null;
function is_empty_queue() {
return is_null(front_ptr);
}
function insert_queue(item) {
let new_pair = pair(item, null);
if(is_empty_queue()) {
front_ptr = new_pair;
rear_ptr = new_pair;
} else {
set_tail(rear_ptr, new_pair);
rear_ptr = new_pair;
}
}
function delete_queue() {
if(is_empty_queue()) {
error("FRONT called with an empty queue");
} else {
display(tail(front_ptr));
front_ptr = tail(front_ptr);
}
}
function print() {
display(front_ptr);
}
function dispatch(m) {
return m === "insert_queue"
? insert_queue
: m === "delete_queue"
? delete_queue
: m === "is_empty_queue"
? is_empty_queue
: m === "print"
? print
: error(m, "Unknow operation -- DISPATCH");
}
return dispatch;
}
// Example
const q = make_queue();
q("insert_queue")("a");
q("insert_queue")("b");
q("insert_queue")("c");
q("print")();
q("delete_queue")();
Metadata
Metadata
Assignees
Labels
Exercise solutionSolutions to textbook exercisesSolutions to textbook exercises