Nasal-Interpreter/std/queue.nas

36 lines
778 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;
}
};
}