Lua编程示例(三):稀疏表、双端队列、格式化输出、表和循环表的格式化输出
技术  /  管理员 发布于 5年前   209
a={}for i=1,10 do a[i]={} for j=0,10 do if(i%2==0) then a[i][j]=0 end endendprint(a[9][10])print(a[10][10])print()--双端队列List={}function List.new() return {first = 0,last = -1}endfunction List.pushleft(list,value) local first= list.first-1 list[first] = value list.first= firstendfunction List.pushright(list,value) local last = list.last+1 list[last]= value list.last=lastendfunction List.popleft(list) local first=list.first if(first>list.last) then error("list is empty") end local res= list[first] list[first]=nil list.first=list.first+1 return resendfunction List.popright(list) local last = list.last if last<first then error("the list is empty") end local res = list[last] list[last]= nil list.last= list.last-1 return resendfunction List.display(list) if(list.first>list.last) then error("the list is empty",2) end for i=list.first ,list.last do print(list[i]) endendmylist=List.new()List.pushleft(mylist,12)List.pushleft(mylist,"00")List.pushright(mylist,34)List.pushright(mylist,56)List.display(mylist)print()function newStack () return {""}endfunction serialize(o) if type(o) == "number" then io.write(o) elseif type(o) == "string" then --不要手动加入引号,否则会有边际效应 io.write(string.format("%q",o)) elseif type(o) == "table" then io.write("{\n") for i,v in pairs(o) do io.write(" "..i.." = ") serialize(v) io.write(",\n") end io.write("}\n") endendserialize(123)print()serialize("112233")print()tab = { a=11,haha="www" ,c=333}serialize(tab)function basicSerialize (o) if type(o) == "number" then return tostring(o) else return string.format("%q", o) endendfunction save (name, value, saved) saved = saved or {} -- 参数未传入的初始化 io.write(name, " = ") if type(value) == "number" or type(value) == "string" then io.write(basicSerialize(value), "\n") elseif type(value) == "table" then if saved[value] then io.write(saved[value], "\tcircle\n") else saved[value] = name io.write("{}\n") for k,v in pairs(value) do local fieldname = string.format("%s[%s]", name, basicSerialize(k)) save(fieldname, v, saved) end end else error("cannot save a " .. type(value)) endenda = {x=1, y=2; {3,4,5}}a[2] = a -- 循环表a.z = a[1] -- 共享子表save('a',a)
运行结果:
nil000123456123"112233"{ a = 11, c = 333, haha = "www",}a = {}a[1] = {}a[1][1] = 3a[1][2] = 4a[1][3] = 5a[2] = a circlea["y"] = 2a["x"] = 1a["z"] = a[1] circle
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号