mirror of
https://github.com/ValKmjolnir/Nasal-Interpreter.git
synced 2026-07-21 02:08:56 +08:00
67 lines
1.4 KiB
Plaintext
67 lines
1.4 KiB
Plaintext
# lib list.nas
|
|
# valkmjolnir 2021/3/31
|
|
var list=func()
|
|
{
|
|
var (begin,end)=(nil,nil);
|
|
return
|
|
{
|
|
push_back:func(elem)
|
|
{
|
|
var tmp={elem:elem,prev:nil,next:nil};
|
|
if(end!=nil)
|
|
{
|
|
end.next=tmp;
|
|
tmp.prev=end;
|
|
end=tmp;
|
|
}
|
|
else
|
|
begin=end=tmp;
|
|
return;
|
|
},
|
|
push_front:func(elem)
|
|
{
|
|
var tmp={elem:elem,prev:nil,next:nil};
|
|
if(begin!=nil)
|
|
{
|
|
begin.prev=tmp;
|
|
tmp.next=begin;
|
|
begin=tmp;
|
|
}
|
|
else
|
|
begin=end=tmp;
|
|
return;
|
|
},
|
|
pop_back:func()
|
|
{
|
|
if(end!=nil)
|
|
end=end.prev;
|
|
if(end==nil)
|
|
begin=nil;
|
|
else
|
|
end.next=nil;
|
|
return;
|
|
},
|
|
pop_front:func()
|
|
{
|
|
if(begin!=nil)
|
|
begin=begin.next;
|
|
if(begin==nil)
|
|
end=nil;
|
|
else
|
|
begin.prev=nil;
|
|
return;
|
|
},
|
|
front:func()
|
|
{
|
|
if(begin!=nil)
|
|
return begin.elem;
|
|
return nil;
|
|
},
|
|
back:func()
|
|
{
|
|
if(end!=nil)
|
|
return end.elem;
|
|
return nil;
|
|
},
|
|
};
|
|
} |