日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LUA Learning Note 4: 数据结构

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LUA Learning Note 4: 数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

--數據結構是沒有語言之分的,只不過不同的語言實現起來的語法不同。

--創建一個簡單的數組
local arr1 = {1,2,3,4,5,6}
--遍歷數組中得每一個元素
? ?for i,v in ipairs(arr1) do
? ?print(v)
? ?end ?
?--另一種創建數組的方式
? ?local arr2 = {}
? ?for i=1,10 do
? ?arr2[i] = i
? ?print(arr2[i])
? ?end?
?--創建數組,下標從2開始
? ?local arr2 = {[2]="hello",[3]="xiao",[4]="ta",[5]="zaojiahua"}
--使用迭代器ipairs遍歷的時候輸出為空值,因為arr2[1]=nil當ipairs遇到空值的時候就返回了
? ?for i,v in ipairs(arr2) do
? ?print(i,v)
? ?end
--這個時候需要使用pairs遍歷
? ?for i,v in pairs(arr2) do
? ?print(i,v)
? ?end
--我們用到了迭代器ipairs()和pairs(),這個使用時候的區別代碼已經有體現了,ipairs中得i代表的就是整數下標,從1開始。
?------------------------------------------------------------------------------------------------------------------

--創建一個10*5的二維數組
local int_arr = {} ?
?for i=1,10 do
? ? int_arr[i] = {}
? ? for j=1,5 do
? ? int_arr[i][j] = j
? ? end
end?
?--遍歷二維數組
for i,v in ipairs(int_arr) do
? ? for j,k in ipairs(v) do
? ? ? ? io.write(k.."\t")
? ? end
? ? print("\n")
end
-------------------------------------------------------------------------------------------------------------

--鏈表的每個節點用一個table表示,table中的字段包括指向下一個節點的指針和該節點的數據元素,這里只是提供一個思路,其他的東西可以用的時候擴展。?

--實現一個鏈表
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

-------------------------------------------------------------------------------------------------------------

--隊列

--實現一個隊列 包括頭指針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
--移除元素,隊列的特點是先進先出
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())


?


?











?

轉載于:https://my.oschina.net/u/1773495/blog/394227

總結

以上是生活随笔為你收集整理的LUA Learning Note 4: 数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。