好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Lua中使用table實現的其它5種數據結構

Lua中使用table實現的其它5種數據結構

熱門標簽:如何利用高德地圖標注家 揚州電銷外呼系統軟件 上海企業外呼系統排名 武漢百應人工智能電銷機器人 智能語音電銷的機器人 電腦外呼系統輻射大嗎 百度地圖標注位置網站 400手機電話免費辦理 開通400電話申請流程

lua中的table不是一種簡單的數據結構,它可以作為其他數據結構的基礎,如:數組,記錄,鏈表,隊列等都可以用它來表示。

1、數組

在lua中,table的索引可以有很多種表示方式。如果用整數來表示table的索引,即可用table來實現數組,在lua中索引通常都會從1開始。

復制代碼 代碼如下:

--二維數組
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是動態的實體,所以用來表示鏈表是很方便的,其中每個節點都用table來表示。

復制代碼 代碼如下:

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、隊列與雙端隊列

在lua中實現隊列的簡單方法是調用table中insert和remove函數,但是如果數據量較大的話,效率還是很慢的,下面是手動實現,效率快許多。

復制代碼 代碼如下:

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

4、集合和包

在Lua中用table實現集合是非常簡單的,見如下代碼:

復制代碼 代碼如下:

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

在Lua中我們可以將包(Bag)看成MultiSet,與普通集合不同的是該容器中允許key相同的元素在容器中多次出現。下面的代碼通過為table中的元素添加計數器的方式來模擬實現該數據結構,如:

復制代碼 代碼如下:

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

低效率:

復制代碼 代碼如下:

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

高效率:

復制代碼 代碼如下:

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 中的字符串連接起來

您可能感興趣的文章:
  • Lua的table庫函數insert、remove、concat、sort詳細介紹
  • Lua中table的幾種構造方式詳解
  • Lua中對table排序實例
  • Lua中遍歷數組和table的4種方法
  • Lua中的table學習筆記
  • Lua中使用table.concat連接大量字符串實例
  • Lua中的table淺析
  • Lua判斷Table是否為空的方法(空的table即{})
  • 獲取Lua表結構(table)數據實例
  • 深入談談lua中神奇的table

標簽:武漢 延邊 新余 張掖 宜賓 黑龍江 嘉峪關 江西

巨人網絡通訊聲明:本文標題《Lua中使用table實現的其它5種數據結構》,本文關鍵詞  Lua,中,使用,table,實現,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中使用table實現的其它5種數據結構》相關的同類信息!
  • 本頁收集關于Lua中使用table實現的其它5種數據結構的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 男女一级毛片| 99久久国产怡红院精品色欲TV| 办公室奶边摸边做爰69式小说| 撞击着成熟美妇身体| 一个人看的hd免费动漫| 狠狠久久婷五月综合色啪网 | 韩国久久| 亚洲熟女乱综合一区二区三区| 人人澡超碰碰97碰碰碰 | 啊啊啊太深了| 老师好大好硬好深好爽想要| 双性少年被老汉糟蹋的小说| 欧洲天堂网| 青草精品在线| 女警花穿丝袜被调教| 精品无码人妻一区二区免费AV| 99久久精品国产亚洲AV热热爱| 欧美大黄大色一级毛片| 热99re久久精品精品免费| 日韩毛片在线观看| 最新一级片| 澳门国产精品成人A片在线播放| 丰满岳乱妇一区二区三区| 亚洲欧洲日本天天堂在线观看| 成 人 黄 色 片 在线播放| 男生和女生上差差| 欧美精品国产第一区二区| 最新翁熄系列| 欧美性生交录像| 无翼乌邪恶彩色无摭挡的图片 | 欧美成人免费草草影院视频| 亚洲AV综合色区无码三区50| 国产一级婬片A片A片免费软件| 欧美日本国产| 两个巨峰越揉越软| 正点嫩模大尺度写真在线视频| 免费91麻豆精品国产自产在线观看| 色偷偷色嚕噜狠狠网站| 三级大片免费看| 国产yin乱大巴视频| 夜夜春夜夜爽|