资料摘自<Lua程序设计(第二版)>
链表
由于table是动态的实体,所以在Lua中实现链表是很方便的。每个结点以一个table来表示,一个"链接"只是结点table中的一个字段,该字段包含了对其他table的引用。如:
list = nil
在表头插入一个元素,元素值为v:
list = {next=list,value=v}
遍历此列表:
local l = list
while l do
<访问l.value>
l = l.next
end
队列
List = {}
--创建队列table
function List.new()
return {first=0,last=-1}
end
--插入元素
function List.pushfirst(list,value)
local first = list.first - 1
list.first = first
list[first] = value
end
function List.pushlast(list,value)
local last = list.last - 1
list.last = last
list[last] = value
end
--删除元素
function List.popfirst(list)
local first = list.first
if first > list.last then error("list is empty") end
local value = list[first]
list[first] = nil --为了允许垃圾收集
list.first = first + 1
return value
end
function List.poplast(list)
local last = list.last
if list.first > last then error("list is empty") end
local value = list[last]
list[last] = nil --为了允许垃圾收集
list.last = last - 1
return value
end