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

Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)結(jié)構(gòu)

 更新時間:2014年09月11日 12:42:33   作者:皂莢花  
這篇文章主要介紹了Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)結(jié)構(gòu),本文講解了數(shù)組、矩陣、鏈表、隊列等內(nèi)容,需要的朋友可以參考下

最近研究Lua,順便寫點(diǎn)筆記吧!數(shù)據(jù)結(jié)構(gòu)是沒有語言之分的,只不過不同的語言實現(xiàn)起來的語法不同,既然是Lua菜鳥,就來實現(xiàn)幾個常用的數(shù)據(jù)結(jié)構(gòu)來練練語法吧!首先是作為數(shù)據(jù)結(jié)構(gòu)基石的數(shù)組,在Lua中數(shù)組是用表來實現(xiàn)的,表是個強(qiáng)大的東西,能表示太多東西了,當(dāng)表中元素的下標(biāo)都是整數(shù)的時候,我們把這個表稱作數(shù)組。數(shù)組的大小不固定,可以動態(tài)的增長。

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

--創(chuàng)建一個簡單的數(shù)組
local arr1 = {1,2,3,4,5,6}
--遍歷數(shù)組中得每一個元素
for i,v in ipairs(arr1) do
print(v)
end

--另一種創(chuàng)建數(shù)組的方式
local arr2 = {}
for i=1,10 do
arr2[i] = i
print(arr2[i])
end

--創(chuàng)建數(shù)組,下標(biāo)從2開始
local arr2 = {[2]="hello",[3]="xiao",[4]="ta",[5]="zaojiahua"}
--使用迭代器ipairs遍歷的時候輸出為空值,因為arr2[1]=nil當(dāng)ipairs遇到空值的時候就返回了
for i,v in ipairs(arr2) do
print(i,v)
end
--這個時候需要使用pairs遍歷
for i,v in pairs(arr2) do
print(i,v)
end

創(chuàng)建數(shù)組的時候整數(shù)下標(biāo)最好從1開始,因為這個值是Lua中默認(rèn)開始的下標(biāo),這和其他語言的下標(biāo)從零開始有點(diǎn)區(qū)別,如果你采用其他的數(shù)字下標(biāo)開始,使用某些Lua庫的時候可能不能獲得預(yù)期的結(jié)果。然后就是遍歷數(shù)組的方式,我們用到了迭代器ipairs()和pairs(),這個使用時候的區(qū)別代碼已經(jīng)有體現(xiàn)了,ipairs中得i代表的就是整數(shù)下標(biāo),從1開始。

有一維數(shù)組當(dāng)然就有多維的,下面來創(chuàng)建一個二維數(shù)組,也就是矩陣,其他的類推吧。

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

--創(chuàng)建一個10*5的二維數(shù)組
local int_arr = {}

for i=1,10 do
    int_arr[i] = {}
    for j=1,5 do
        int_arr[i][j] = j
    end
end

--遍歷二維數(shù)組
for i,v in ipairs(int_arr) do
    for j,k in ipairs(v) do
        io.write(k.."\t")
    end
    print("\n")
end


接下來實現(xiàn)一個鏈表,鏈表的每個節(jié)點(diǎn)用一個table表示,table中的字段包括指向下一個節(jié)點(diǎn)的指針和該節(jié)點(diǎn)的數(shù)據(jù)元素,這里只是提供一個思路,其他的東西可以用的時候擴(kuò)展。

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

--實現(xiàn)一個鏈表
local list = nil
--鏈表元素包含倆個字段,next代表的是指針,指向下一個鏈表元素,value代表的是該鏈表元素的值
for i=1,10 do
    list = {next = list,value = i}
end

--鏈表的遍歷
local l = list
while l do
    print(l.value)
    l = l.next
end


接下來實現(xiàn)一個比較有用的數(shù)據(jù)結(jié)構(gòu)——隊列。我把隊列封裝在了一個table表中,關(guān)于隊列的操作和表示隊列頭和隊列尾的指針也封裝在了一起。當(dāng)對頭等于隊尾的時候表示沒有元素,而這個隊列是可以無限增大的,并沒有隊列滿的限制,大家可以根據(jù)自己的需要進(jìn)行擴(kuò)展。

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

--實現(xiàn)一個隊列 包括頭指針first和尾指針last first==last的時候代表隊列為空
local Que = {first=0,last=0}

--向隊列中添加元素,last索引指向最后一個元素的下一個元素,first索引指向的是第一個元素
function Que:push(value)
    local last = self.last
    self[last] = value
    self.last = last+1
end
--移除元素,隊列的特點(diǎn)是先進(jìn)先出
function Que:pop()
    if self.first == self.last then
        print("隊列空")
        return nil
    end
    local first = self.first
    self.first = first+1
    return self[first]
end

--顯示隊列中得元素
function Que:showValue()
    for i=self.first,self.last-1 do
        print("value:"..self[i])
    end
end

--測試
print("隊列測試")
Que:showValue()
Que:push(2)
Que:push(3)
print("push 2,3")
Que:showValue()
Que:push(3)
print("push 3")
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("push 100")
Que:push(100)
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("pop:"..Que:pop())

相關(guān)文章

  • Lua 操作 MongoDB 數(shù)據(jù)庫實例

    Lua 操作 MongoDB 數(shù)據(jù)庫實例

    這篇文章主要介紹了Lua 操作 MongoDB 數(shù)據(jù)庫實例,本文給出了修改后的lua-mongo API和具體的操作MongoDB 數(shù)據(jù)庫代碼,需要的朋友可以參考下
    2015-03-03
  • Lua中函數(shù)與面向?qū)ο缶幊痰幕A(chǔ)知識整理

    Lua中函數(shù)與面向?qū)ο缶幊痰幕A(chǔ)知識整理

    函數(shù)在面對對象的編程中又被叫做方法,會受到作用域的制約,Lua中具有類等面向?qū)ο蟮奶匦?接下來我們就來看一下Lua中函數(shù)與面向?qū)ο缶幊痰幕A(chǔ)知識整理
    2016-06-06
  • Lua函數(shù)與字符串處理簡明總結(jié)

    Lua函數(shù)與字符串處理簡明總結(jié)

    這篇文章主要介紹了Lua函數(shù)與字符串處理簡明總結(jié),本文總結(jié)了單一參數(shù)、多個參數(shù)、可變參數(shù)、函數(shù)返回值及字符串處理等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Lua中釋放table占用內(nèi)存的方法

    Lua中釋放table占用內(nèi)存的方法

    這篇文章主要介紹了Lua中釋放table占用內(nèi)存的方法,本文講解了兩種釋放內(nèi)存的方法,需要的朋友可以參考下
    2015-04-04
  • 利用Lua定制Redis命令的方法詳解

    利用Lua定制Redis命令的方法詳解

    這篇文章主要給大家介紹了關(guān)于利用Lua定制Redis命令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Lua學(xué)習(xí)筆記之運(yùn)算符和表達(dá)式

    Lua學(xué)習(xí)筆記之運(yùn)算符和表達(dá)式

    這篇文章主要介紹了Lua學(xué)習(xí)筆記之運(yùn)算符和表達(dá)式,本文在代碼中使用注釋對Lua的運(yùn)算符和表達(dá)式做了講解,需要的朋友可以參考下
    2014-09-09
  • Lua字符串模式匹配函數(shù)小結(jié)

    Lua字符串模式匹配函數(shù)小結(jié)

    這篇文章主要介紹了Lua字符串模式匹配函數(shù)小結(jié),本文涉及一些正則操作,需要的朋友可以參考下
    2014-11-11
  • Lua實現(xiàn)split函數(shù)

    Lua實現(xiàn)split函數(shù)

    這篇文章主要介紹了Lua實現(xiàn)split函數(shù),lua中沒有split分割字條串函數(shù),本文使用自定義函數(shù)實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • 淺談chuck-lua中的多線程

    淺談chuck-lua中的多線程

    Lua對多線程支持初步體驗是本文要介紹的內(nèi)容,主要是來了解LUA中多線程的使用,,經(jīng)過反復(fù)的實驗得到的結(jié)果是,lua不支持多線程,如何讓它支持?來看本文內(nèi)容。
    2015-07-07
  • Lua中的全局變量、非全局變量總結(jié)

    Lua中的全局變量、非全局變量總結(jié)

    這篇文章主要介紹了Lua中的全局變量、非全局變量總結(jié),全局變量可稱之為Lua環(huán)境變量,需要的朋友可以參考下
    2014-09-09

最新評論

西和县| 房产| 山东| 堆龙德庆县| 绥江县| 昌都县| 德令哈市| 华池县| 淮安市| 泾川县| 宜阳县| 武邑县| 北海市| 乌兰浩特市| 重庆市| 杨浦区| 全州县| 凤冈县| 雷波县| 榆林市| 大埔区| 湟源县| 尖扎县| 弥渡县| 库车县| 灵武市| 合山市| 汉寿县| 聊城市| 闵行区| 府谷县| 师宗县| 洪湖市| 金湖县| 郑州市| 久治县| 南华县| 澎湖县| 沂水县| 武山县| 三门峡市|