<Lua程序设计(第二版)>书摘-8

来源:互联网 发布:淘宝专柜代购是真的吗 编辑:程序博客网 时间:2024/05/22 05:04

资料摘自<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

0 0
原创粉丝点击