码迷,mamicode.com
首页 > 其他好文 > 详细

Lua初学习 9-14_03 数据结构 ---> 队列 (自己写的 跟书上差不多)

时间:2016-09-14 12:42:32      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

1:创建一个双向队列

list = { first =1,last = 0}

function list:pushFirst(value) --从头放入一个 value
local f = self.first-1 -- f=0
self[f] = value --self[0] = value
self.first =f -- self.f = 0
--print(self.first,f)
end

function list:pushLast(value) --从尾放入一个 value
local l= self.last+1
self[l] = value
self.last = l
end

function list:popFirst() --推出第一个value
if(self.first > self.last) then
print("警告 : 队列已经空了 ")
return nil
end
--print("进来时候 first index : ",self.first)
local v = self[self.first]
--print("推出来的first:",self[self.first])
self[self.first] = nil
self.first = self.first + 1
--print("list first index : ",self.first)
return v
end

function list:popLast() --推出最后一个value
if(self.first > self.last) then
print("警告 : 队列已经空了 ")
return nil
end
local v = self[self.last]
self[self.last] = nil
self.last =self.last-1
return v
end


list:pushFirst(11)
list:pushFirst(22)
list:pushFirst(33)
list:pushLast(44)
list:pushLast(55)
--从前放入3个 从后放入2个 33 22 11 44 55

print(list:popLast()) --last 55
list:pushLast(99) -- 33 22 11 44 99
list:pushFirst("orz") --orz" 33 22 11 44 99
print(list:popFirst()) --first orz

      ========接下来再推剩下的==========

print(list:popFirst()) --剩余5   ->orz
print(list:popFirst()) --剩余4       33
print(list:popFirst()) --剩余3       22
print(list:popFirst()) --剩余2       11
print(list:popFirst()) --剩余1       44
print(list:popFirst()) --剩余0       99
print(list:popFirst()) --剩余0       空警告

Lua初学习 9-14_03 数据结构 ---> 队列 (自己写的 跟书上差不多)

标签:

原文地址:http://www.cnblogs.com/cocotang/p/5871283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!