Nasal-Interpreter/std/queue.nas

36 lines
806 B
Plaintext

# queue.nas
# valkmjolnir 2021/3/31
var new = func() {
var (begin, end) = (nil, nil);
return{
push: func(elem) {
var new_node = {
elem:elem,
next:nil
};
if (begin == nil)
begin = end = new_node;
else {
end.next = new_node;
end = new_node;
}
},
pop: func() {
if (begin != nil)
begin = begin.next;
if (begin == nil)
end = nil;
},
front: func() {
if (begin != nil)
return begin.elem;
},
clear: func() {
begin = end = nil;
},
empty: func() {
return begin == nil;
}
};
}