激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Lua - Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)結(jié)構(gòu)

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

2019-11-17 19:51皂莢花 Lua

這篇文章主要介紹了Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)結(jié)構(gòu),本文講解了數(shù)組、矩陣、鏈表、隊(duì)列等內(nèi)容,需要的朋友可以參考下

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

 

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


--創(chuàng)建一個(gè)簡單的數(shù)組
local arr1 = {1,2,3,4,5,6}
--遍歷數(shù)組中得每一個(gè)元素
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遍歷的時(shí)候輸出為空值,因?yàn)閍rr2[1]=nil當(dāng)ipairs遇到空值的時(shí)候就返回了
for i,v in ipairs(arr2) do
print(i,v)
end
--這個(gè)時(shí)候需要使用pairs遍歷
for i,v in pairs(arr2) do
print(i,v)
end

 

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

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

 

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


--創(chuàng)建一個(gè)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

 

 

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

 

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

 

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


--實(shí)現(xiàn)一個(gè)鏈表
local list = nil
--鏈表元素包含倆個(gè)字段,next代表的是指針,指向下一個(gè)鏈表元素,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

 

 

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

 

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


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

 

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

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

--測試
print("隊(duì)列測試")
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())

 

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

延伸 · 閱讀

精彩推薦
  • LuaLua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua教程(二):基礎(chǔ)知識(shí)、類型與值介紹

    Lua教程(二):基礎(chǔ)知識(shí)、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎(chǔ)知識(shí)、類型與值介紹,本文講解了Hello World程序、代碼規(guī)范、全局變量、類型與值等內(nèi)容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua中計(jì)算、執(zhí)行字符串中Lua代碼的方法

    Lua中計(jì)算、執(zhí)行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計(jì)算、執(zhí)行字符串中Lua代碼的方法,類似JavaScript中eval函數(shù)的功能,在Lua中也可以實(shí)現(xiàn),需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • LuaLua實(shí)現(xiàn)__add方法重載示例

    Lua實(shí)現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實(shí)現(xiàn)__add方法重載示例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時(shí)講解了lua注釋語法、Lua命令行方式等內(nèi)容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個(gè)table賦值等內(nèi)容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實(shí)例詳細(xì)講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • Lua深入探究Lua中的解析表達(dá)式

    深入探究Lua中的解析表達(dá)式

    這篇文章主要介紹了深入探究Lua中的解析表達(dá)式,對于其語法部分的說明和示例都超詳細(xì),極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
主站蜘蛛池模板: 免费久久久 | 久久精品中文字幕一区 | 久久99精品久久久久久秒播放器 | 在线成人影视 | 欧美一页 | 337p日本欧洲亚洲大胆精蜜臀 | 91美女视频在线观看 | 久久无 | 久久性生活免费视频 | 午夜av男人的天堂 | 成人毛片网站 | 日韩av电影在线免费观看 | 午夜久久视频 | 高清在线国产 | 高颜值美女啪啪 | 视频一区二区久久 | 久久精品中文字幕一区 | 毛片在线免费观看网址 | 国产精品一区在线免费观看 | 爱操在线 | 国产精品美女一区二区 | 一级视频网站 | 欧美视频99 | 深夜福利视频免费观看 | 免费的性生活视频 | 国产一区二区视频在线播放 | 最近中文字幕一区二区 | 免费观看一级淫片 | 免费a级网站 | 午夜小视频免费观看 | 久久久久久久一区二区三区 | 国产乱淫av片免费网站 | 中文字幕国产亚洲 | 国产91在线亚洲 | 黄色片网站在线看 | 日本一区二区久久久 | 国产一区二区三区在线免费观看 | 一级免费| 亚洲精品在线观看网站 | 国产精品成人久久 | 亚洲影视在线 |