亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua中使用table實現的其它5種數據結構

2024-07-21 23:04:08
字體:
來源:轉載
供稿:網友

lua中的table不是一種簡單的數據結構,它可以作為其他數據結構的基礎,如:數組,記錄,鏈表,隊列等都可以用它來表示。

1、數組

在lua中,table的索引可以有很多種表示方式。如果用整數來表示table的索引,即可用table來實現數組,在lua中索引通常都會從1開始。

復制代碼 代碼如下:

--二維數組
n=10 m=10
arr={}
for i=1,n do
     arr[i]={}
   for j=1,m do
      arr[i][j]=i*j
   end
end

 

for i=1, n do
   for j=1, m do
      if(j~=m) then  io.write(arr[i][j].." ")
      else print(arr[i][j])
      end
   end
end

 

2、鏈表

在lua中,由于table是動態的實體,所以用來表示鏈表是很方便的,其中每個節點都用table來表示。

復制代碼 代碼如下:

list = nil
for i = 1, 10 do
    list = { next = list, value = i}
end

 

local l = list
while l do
    print(l.value)
    l = l.next
end

 

3、隊列與雙端隊列

在lua中實現隊列的簡單方法是調用table中insert和remove函數,但是如果數據量較大的話,效率還是很慢的,下面是手動實現,效率快許多。

復制代碼 代碼如下:

List={}

 

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

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

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

function List.popFront(list)
   local first=list.first
   if first>list.last then error("List is empty!")
   end
   local value =list[first]
   list[first]=nil
   list.first=first+1
   return value
end

function List.popBack(list)
   local last=list.last
   if last<list.first then error("List is empty!")
   end
   local value =list[last]
   list[last]=nil
   list.last=last-1
   return value
end

lp=List.new()
List.pushFront(lp,1)
List.pushFront(lp,2)
List.pushBack(lp,-1)
List.pushBack(lp,-2)
x=List.popFront(lp)
print(x)
x=List.popBack(lp)
print(x)
x=List.popFront(lp)
print(x)
x=List.popBack(lp)
print(x)
x=List.popBack(lp)
print(x)
--輸出結果
-- 2
-- -2
-- 1
-- -1
-- lua:... List is empty!

 

4、集合和包

在Lua中用table實現集合是非常簡單的,見如下代碼:

復制代碼 代碼如下:

    reserved = { ["while"] = true, ["end"] = true, ["function"] = true, }
    if not reserved["while"] then
        --do something
    end

 

在Lua中我們可以將包(Bag)看成MultiSet,與普通集合不同的是該容器中允許key相同的元素在容器中多次出現。下面的代碼通過為table中的元素添加計數器的方式來模擬實現該數據結構,如:

 

復制代碼 代碼如下:

function insert(Bag,element)
    Bag[element]=(Bag[element] or 0)+1
end

 

function remove(Bag,element)
   local count=Bag[element]
   if count >0 then Bag[element]=count-1
   else Bag[element]=nil
   end
end

 

5、StringBuild

如果在lua中將一系列字符串連接成大字符串的話,有下面的方法:

低效率:

復制代碼 代碼如下:

local buff=""
for line in io.lines() do
   buff=buff..line.."/n"
end

 

高效率:

復制代碼 代碼如下:

local t={}

 

for line in io.lines() do
   if(line==nil) then break end
   t[#t+1]=line
end

local s=table.concat(t,"/n")  --將table t 中的字符串連接起來


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人欧美一区二区三区在线湿哒哒| 午夜精品一区二区三区在线播放| 国产在线观看91精品一区| 亚洲影院色无极综合| 91高清视频免费| 国语自产偷拍精品视频偷| 久久久久久国产免费| 国产精品2018| 欧美小视频在线| 性日韩欧美在线视频| 亚洲精品日韩久久久| 精品国产一区二区在线| 中文字幕av一区| 国产精品偷伦视频免费观看国产| 欧美裸体男粗大视频在线观看| 亚洲自拍偷拍在线| 91香蕉嫩草神马影院在线观看| 亚洲欧美日韩在线高清直播| 久久夜色精品国产| 亚洲欧美国产日韩中文字幕| xxx一区二区| 亚洲一区亚洲二区亚洲三区| 日产精品99久久久久久| 日韩av在线网站| 亚洲国产欧美一区| 亚洲激情视频网站| 91嫩草在线视频| 亚洲一区二区久久| 欧美精品做受xxx性少妇| 草民午夜欧美限制a级福利片| 国产精品久久久久久影视| 久久久久女教师免费一区| 国产精品视频一区二区高潮| 国产成人精品日本亚洲专区61| 日韩人在线观看| 亚洲欧美中文在线视频| 秋霞成人午夜鲁丝一区二区三区| 国产欧美一区二区三区在线看| 欧美日韩成人精品| 色多多国产成人永久免费网站| 视频在线观看99| 国产国产精品人在线视| 亚洲福利视频在线| 欧美裸体xxxx极品少妇软件| 久久亚洲综合国产精品99麻豆精品福利| 日韩精品中文字幕在线播放| 国产日韩av在线播放| 欧美日韩黄色大片| 国产一区二区三区在线观看网站| 日韩综合中文字幕| 国产精品人人做人人爽| 亚洲成人av片在线观看| 欧美乱大交做爰xxxⅹ性3| 国产精品嫩草影院久久久| 隔壁老王国产在线精品| 国产一区私人高清影院| 欧美一级电影在线| 亚洲精品美女在线观看播放| 欧美男插女视频| 国产精品久久久久久亚洲调教| 久久久精品久久久| 狠狠躁夜夜躁人人爽天天天天97| 国产91精品久久久久久久| 中文字幕欧美日韩| 亚洲国产精品va在线看黑人动漫| 日韩精品免费综合视频在线播放| 综合国产在线观看| 欧美激情一区二区三区久久久| 亚洲a区在线视频| 亚洲精品资源美女情侣酒店| 中文字幕亚洲欧美日韩2019| 久久久久久久久电影| 国产精品www色诱视频| 日韩欧美精品网站| 亚洲欧美激情另类校园| 亚洲综合精品伊人久久| 91精品啪在线观看麻豆免费| 欧美黑人xxxx| 国产精品一区电影| 91九色综合久久| 成人免费网站在线看| 亚洲夜晚福利在线观看| 国产欧美一区二区| 国产91成人video| 国产精品视频在线播放| 日韩成人在线视频观看| 欧美成人午夜视频| 5566日本婷婷色中文字幕97| 午夜欧美大片免费观看| 亚洲xxxxx| 国产一区二区三区欧美| 国产亚洲aⅴaaaaaa毛片| 俺去了亚洲欧美日韩| 欧美日韩不卡合集视频| 欧美日韩一区二区免费视频| 亚洲欧美中文在线视频| 亚洲国产成人在线视频| 一区二区三区四区视频| 国产精品国产自产拍高清av水多| 国产精品人成电影在线观看| 日韩精品在线视频| 91精品在线观| 国产欧美va欧美va香蕉在| 久久五月天色综合| 九九热精品在线| 国产精品视频xxx| 欧美激情久久久久久| 日韩在线不卡视频| 精品女同一区二区三区在线播放| 国产在线拍揄自揄视频不卡99| 亚洲一区二区在线播放| 久久久亚洲精选| 欧美高清不卡在线| 欧美成人免费视频| 萌白酱国产一区二区| 欧美高清电影在线看| 精品美女久久久久久免费| 久久人人爽国产| 91麻豆国产语对白在线观看| 欧美一区二区三区四区在线| 欧美精品一区三区| 国产91亚洲精品| 亚洲欧美成人在线| 国产伊人精品在线| 日韩av在线免费观看| 日韩在线观看你懂的| 欧美大片免费看| 日av在线播放中文不卡| 欧美激情极品视频| 亚洲精品黄网在线观看| 久久九九国产精品怡红院| 国产精品一二区| 一本一道久久a久久精品逆3p| 国产精品久久久久不卡| 久久久精品久久久久| 国内精品久久久久| 欧美性猛交xxxx乱大交蜜桃| 亚洲国产中文字幕在线观看| 精品动漫一区二区| 久久影院中文字幕| 亚洲丁香婷深爱综合| 日韩视频在线一区| 国产精品免费在线免费| 97国产精品视频人人做人人爱| 91高潮在线观看| 亚洲第一区在线观看| 欧美激情中文字幕乱码免费| 久久6免费高清热精品| 亚洲天天在线日亚洲洲精| 性欧美在线看片a免费观看| 国产欧美一区二区三区在线看| 日韩免费av片在线观看| 欧美日韩亚洲视频一区| 91亚洲国产精品| 欧美成人激情图片网| 久久久久久com| 2018日韩中文字幕| 精品久久久在线观看| 欧美乱妇高清无乱码| 亚洲人成电影在线观看天堂色| 久久久久久久久久久久久久久久久久av| 日韩精品在线第一页| 亚洲色图在线观看| 尤物yw午夜国产精品视频明星|