Lua table 扩展数组、链表


数组
特点:通过下标访问。

lua table直接下标访问就可以实现数组
例程

tab = {2, 3, 4, 5} print(tab[1], tab[2], tab[3], tab[4])

运行结果
2 3 4 5
例程

tab = {{2, 3, 4, 5},{9,8,7}} print(tab[1][1], tab[1][2], tab[1][3], tab[1][4]) print(tab[2][1], tab[2][2], tab[2][3], tab[2][4])

运行结果
2 3 4 5
9 8 7 nil

链表

特点:很多个节点组成
例程

tab = {2,3,4,5,6} n = table.getn(tab) --返回元素个数list = nil for i=1, n do list = {val = tab[i], next = list} endprint(list.val, list.next.val, list.next.next.val)

【Lua table 扩展数组、链表】运行结果
6 5 4
Lua table 扩展数组、链表
文章图片

例程

tab = {2,3,4,5,6} n = table.getn(tab) --返回元素个数list = nil for i=1, n do list = {val = tab[i], next = list} endfunction listIterator(tb, node) if node == nil then return tb else return node.next end endfunction ipairsList(tb) return listIterator, tb, nil end-- 删除节点 function delNode(list, val) for node in ipairsList(list) do if node.next ~= nil and node.next.val == val then local tmp = node.next -- 保存下一个节点 node.next = node.next.next tmp = nil -- 删除下一节点 end end enddelNode(list, 3)-- 遍历链表 for node in ipairsList(list) do print(node.val) end

运行结果
6
5
4
2

    推荐阅读