11.3 链表

Lua中用tables很容易实现链表,每一个节点是一个table,指针是这个表的一个域(field),并且指向另一个节点(table)。例如,要实现一个只有两个域:值和指针的基本链表,代码如下:

根节点:

list = nil

在链表开头插入一个值为v的节点:

list = {next = list, value = v}

要遍历这个链表只需要:

local l = list

while l do

    print(l.value)

    l = l.next

end

其他类型的链表,像双向链表和循环链表类似的也是很容易实现的。然后在Lua中在很少情况下才需要这些数据结构,因为通常情况下有更简单的方式来替换链表。比如,我们可以用一个非常大的数组来表示栈,其中一个域n指向栈顶。


相关链接:
lua程序设计目录 - 中国lua开发者 - lua论坛