最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua中使用table實(shí)現(xiàn)的其它5種數(shù)據(jù)結(jié)構(gòu)

 更新時(shí)間:2014年09月27日 15:27:39   作者:Mr.Ant  
這篇文章主要介紹了Lua中使用table實(shí)現(xiàn)的其它5種數(shù)據(jù)結(jié)構(gòu),本文用table為基礎(chǔ),實(shí)現(xiàn)了數(shù)組、鏈表、隊(duì)列、集合等數(shù)據(jù)類型,需要的朋友可以參考下

lua中的table不是一種簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),它可以作為其他數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),如:數(shù)組,記錄,鏈表,隊(duì)列等都可以用它來(lái)表示。

1、數(shù)組

在lua中,table的索引可以有很多種表示方式。如果用整數(shù)來(lái)表示table的索引,即可用table來(lái)實(shí)現(xiàn)數(shù)組,在lua中索引通常都會(huì)從1開(kāi)始。

復(fù)制代碼 代碼如下:

--二維數(shù)組
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是動(dòng)態(tài)的實(shí)體,所以用來(lái)表示鏈表是很方便的,其中每個(gè)節(jié)點(diǎn)都用table來(lái)表示。

復(fù)制代碼 代碼如下:

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、隊(duì)列與雙端隊(duì)列

在lua中實(shí)現(xiàn)隊(duì)列的簡(jiǎn)單方法是調(diào)用table中insert和remove函數(shù),但是如果數(shù)據(jù)量較大的話,效率還是很慢的,下面是手動(dòng)實(shí)現(xiàn),效率快許多。

復(fù)制代碼 代碼如下:

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)
--輸出結(jié)果
-- 2
-- -2
-- 1
-- -1
-- lua:... List is empty!

4、集合和包

在Lua中用table實(shí)現(xiàn)集合是非常簡(jiǎn)單的,見(jiàn)如下代碼:

復(fù)制代碼 代碼如下:

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

在Lua中我們可以將包(Bag)看成MultiSet,與普通集合不同的是該容器中允許key相同的元素在容器中多次出現(xiàn)。下面的代碼通過(guò)為table中的元素添加計(jì)數(shù)器的方式來(lái)模擬實(shí)現(xiàn)該數(shù)據(jù)結(jié)構(gòu),如:

復(fù)制代碼 代碼如下:

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中將一系列字符串連接成大字符串的話,有下面的方法:

低效率:

復(fù)制代碼 代碼如下:

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

高效率:

復(fù)制代碼 代碼如下:

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 中的字符串連接起來(lái)

相關(guān)文章

  • Lua中的基本數(shù)據(jù)類型詳細(xì)介紹

    Lua中的基本數(shù)據(jù)類型詳細(xì)介紹

    這篇文章主要介紹了Lua中的基本數(shù)據(jù)類型詳細(xì)介紹,本文詳細(xì)的講解了Lua中的8種基本數(shù)據(jù)類型,需要的朋友可以參考下
    2014-09-09
  • Lua中string.len()使用指南

    Lua中string.len()使用指南

    Lua 字符串庫(kù)中的所有函數(shù)都導(dǎo)出在模塊 string 中,今天我們先來(lái)看看string.len()的使用,有需要的小伙伴可以參考下
    2016-08-08
  • Lua語(yǔ)言新手簡(jiǎn)單入門(mén)教程

    Lua語(yǔ)言新手簡(jiǎn)單入門(mén)教程

    這篇文章主要給大家介紹的是關(guān)于Lua語(yǔ)言新手入門(mén)的簡(jiǎn)單教程,文中通過(guò)示例代碼一步步介紹的非常詳細(xì),對(duì)各位新手們的入門(mén)提供了一個(gè)很方便的教程,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • lua腳本實(shí)現(xiàn)自動(dòng)生成APK包

    lua腳本實(shí)現(xiàn)自動(dòng)生成APK包

    上次用了純bat寫(xiě)了個(gè)腳本生成APK包,感覺(jué)bat擴(kuò)展性和語(yǔ)法差的令人發(fā)指,這次用lua重寫(xiě)了一個(gè)腳本,適用于cocos2dx+lua的項(xiàng)目,小伙伴們來(lái)參考下吧。
    2015-03-03
  • Lua實(shí)現(xiàn)正序和倒序的文件讀取方法

    Lua實(shí)現(xiàn)正序和倒序的文件讀取方法

    這篇文章主要介紹了Lua實(shí)現(xiàn)正序和倒序的文件讀取方法,本文講解使用table生成鏈表完成正序和倒序的文件讀入功能,需要的朋友可以參考下
    2015-04-04
  • Lua教程(一):在C++中嵌入Lua腳本

    Lua教程(一):在C++中嵌入Lua腳本

    這篇文章主要介紹了Lua教程(一):在C++中嵌入Lua腳本,本文在MAC環(huán)境中開(kāi)發(fā),同時(shí)探討了IOS項(xiàng)目集成Lua、Android項(xiàng)目集成Lua等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua中的變量和流控制入門(mén)學(xué)習(xí)

    Lua中的變量和流控制入門(mén)學(xué)習(xí)

    這篇文章主要介紹了Lua中的變量和流控制入門(mén)學(xué)習(xí),其中--兩個(gè)橫線開(kāi)始單行的注釋,--[[加上兩個(gè)[和]表示多行的注釋--]],需要的朋友可以參考下
    2015-07-07
  • Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量)

    Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量)

    這篇文章主要介紹了Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量),使用本文方法可以實(shí)現(xiàn)避免創(chuàng)建全局變量,在必須使用全局變量的情況下也給出了實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2014-12-12
  • Lua性能優(yōu)化技巧(二):基本事實(shí)

    Lua性能優(yōu)化技巧(二):基本事實(shí)

    這篇文章主要介紹了Lua性能優(yōu)化技巧(二):基本事實(shí),本文講解了一些編譯器和寄存器的一些知識(shí),需要的朋友可以參考下
    2015-04-04
  • 詳解Lua中的數(shù)組概念知識(shí)

    詳解Lua中的數(shù)組概念知識(shí)

    這篇文章主要介紹了Lua中的數(shù)組概念知識(shí),是Lua入門(mén)學(xué)習(xí)中的基礎(chǔ),需要的朋友可以參考下
    2015-05-05

最新評(píng)論

恭城| 永福县| 尤溪县| 讷河市| 聂拉木县| 桦南县| 壶关县| 梅河口市| 永福县| 塔城市| 潞西市| 宁陵县| 灌云县| 淮北市| 泰顺县| 屏山县| 奉贤区| 卢湾区| 洛南县| 新昌县| 麻江县| 巨野县| 武陟县| 富宁县| 宁乡县| 天祝| 莒南县| 兴城市| 瓮安县| 中宁县| 丽江市| 桃园县| 墨江| 若羌县| 介休市| 伊宁市| 太保市| 达日县| 聂拉木县| 始兴县| 洪泽县|