lua 图

local basegraph = {"2-5","2-3","2-8","5-4","3-4","4-3","3-8","8-7","7-10"}
function name2node(graph,name)
	if not graph[name] then
		graph[name] = {name = name,obj = {}}
	end
	return graph[name]
end


function makegraph()
	local graph = {}
	for k,v in pairs(basegraph) do
		local namefrom,nameend = string.match(v,"(%S+)-(%S+)")
		local formNode = name2node(graph,namefrom)
		local endNode = name2node(graph,nameend)
		formNode.obj[endNode] = true
	end
	return graph
end


function findpath(curr,to,path,visited)
	path = path or {}
	visited = visited or {}
	if visited[curr] then
		return nil
	end
	visited[curr] = true
	path[#path+1] = curr
	if curr == to then
		return path
	end


	for node in pairs(curr.obj) do
		local p = findpath(node,to,path,visited)
		if p then return p end
	end
	path[#path] = nil
end


function printpath(path)
	local s = ""
	for i=1,#path do
		if i ~= #path then
			s = s .. path[i].name .. "->"
		else
			s = s .. path[i].name
		end
	end
	print(s)
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值