52 lines
1.2 KiB
Plaintext
52 lines
1.2 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;
|
|
},
|
|
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;
|
|
},
|
|
pop_back:func(){
|
|
if(end!=nil)
|
|
end=end.prev;
|
|
if(end==nil)
|
|
begin=nil;
|
|
else
|
|
end.next=nil;
|
|
},
|
|
pop_front:func(){
|
|
if(begin!=nil)
|
|
begin=begin.next;
|
|
if(begin==nil)
|
|
end=nil;
|
|
else
|
|
begin.prev=nil;
|
|
},
|
|
front:func(){
|
|
if(begin!=nil)
|
|
return begin.elem;
|
|
},
|
|
back:func(){
|
|
if(end!=nil)
|
|
return end.elem;
|
|
},
|
|
};
|
|
} |