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
文章图片
例程
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
推荐阅读
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- tableView|tableView 头视图下拉放大 重写
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 前端代码|前端代码 返回顶部 backToTop
- #12-UITableView|#12-UITableView 优化方案
- iOS自适应高度的TableViewCell
- HashMap&ConcurrentHashMap&HashTable
- UITableView和UICollectionView的Cell重用问题
- RxSwift官方实例八(UITableVIew)
- PHP|PHP 扩展开发检测清单(扩展开发必读)