Luaプログラミング(三)疎表、両端キュー、フォーマット出力、表と循環表のフォーマット出力

2959 ワード

a={}
for i=1,10 do
	a[i]={}
	for j=0,10 do
		if(i%2==0) then
			a[i][j]=0
		end
	end
end

print(a[9][10])
print(a[10][10])
print()

--    

List={}

function List.new()
	return {first = 0,last = -1}
end

function List.pushleft(list,value)
	local first= list.first-1
	list[first] = value
	list.first= first
end

function List.pushright(list,value)
	local last = list.last+1
	list[last]= value
	list.last=last
end

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

function List.popright(list)
	local last = list.last
	if lastlist.last) then
		error("the list is empty",2)
	end
	for i=list.first ,list.last do
		print(list[i])
	end
end

mylist=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 {""}
end


function 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("{
") for i,v in pairs(o) do io.write(" "..i.." = ") serialize(v) io.write(",
") end io.write("}
") end end serialize(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) end end function save (name, value, saved) saved = saved or {} -- io.write(name, " = ") if type(value) == "number" or type(value) == "string" then io.write(basicSerialize(value), "
") elseif type(value) == "table" then if saved[value] then io.write(saved[value], "\tcircle
") else saved[value] = name io.write("{}
") 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)) end end a = {x=1, y=2; {3,4,5}} a[2] = a -- a.z = a[1] -- save('a',a)

 
実行結果:
nil
0

00
12
34
56

123
"112233"
{
    a = 11,
    c = 333,
    haha = "www",
}
a = {}
a[1] = {}
a[1][1] = 3
a[1][2] = 4
a[1][3] = 5
a[2] = a	circle
a["y"] = 2
a["x"] = 1
a["z"] = a[1]	circle



 
ブログは  阿修羅道、転載は出典を明記してください:http://blog.csdn.net/fansongy/article/details/7007371