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}
end

print(list.val, list.next.val, list.next.next.val)

运行结果
6 5 4

Lua table 扩展数组、链表_第1张图片

例程

tab = {2,3,4,5,6}
n = table.getn(tab)	--返回元素个数

list = nil
for i=1, n do
	list = {val = tab[i], next = list}
end

function listIterator(tb, node)
	if node == nil then
		return tb
	else
		return node.next
	end
end

function 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
end

delNode(list, 3)

-- 遍历链表
for node in ipairsList(list) do
	print(node.val)
end

运行结果

6
5
4
2

你可能感兴趣的:(Lua)