LUA Learning Note 4: 數據結構

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

--建立一個簡單的數組
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中的字段包括指向下一個節點的指針和該節點的數據元素,這裏只是提供一個思路,其餘的東西能夠用的時候擴展。  spa

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

 --向隊列中添加元素,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 
 --顯示隊列中得元素
it

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())


 
io

相關文章
相關標籤/搜索