链表
我们可以在Lua语言中把每个节点用一个表来表示,链接则为一个包含指向其他表的引用的简单表字段。
list = nil
list = {next = list, value = v}
local l = list
while l do
--visit l.value
l = l.next
end
队列及双端队列
Lua中实现队列的高效实现方法就是使用两个索引,一个指向第一个元素,另一个则指向最后一个元素。
function listNew()
return {first = 0, last = -1}
end
function pushFirst(list, value)
local first = list.first - 1
list.first = first
list[first] = value
end
function pushLast(list, value)
local last = list.last + 1
list.last = last
list[last] = value;
end
function 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 popLast(list)
local last = list.last
if last > list.first then error("list is empty") end
local value = list[last]
list[last] = nil
list.last = last - 1
return value
end
1610

被折叠的 条评论
为什么被折叠?



