Nasal-Interpreter/test/queue.nas

35 lines
562 B
Plaintext

# lib queue.nas
var block_alloc=func()
{
return {elem:nil,next:nil};
}
var new_queue=func()
{
return {next:nil};
}
var queue_push=func(queue,elem)
{
var tmp=queue;
while(tmp.next!=nil)
tmp=tmp.next;
tmp.next=block_alloc();
tmp.next.elem=elem;
}
var queue_pop=func(queue)
{
var tmp=queue.next;
if(tmp!=nil)
queue.next=tmp.next;
return;
}
var queue_front=func(queue)
{
var tmp=queue.next;
if(tmp!=nil)
return tmp.elem;
return nil;
}
var queue_empty=func(queue)
{
return queue.next==nil;
}