[code]
queue = {}
function queue.new()
return { first = 1, last = 0 }
end
function queue.push( Q, value)
local last = Q.last + 1
Q.last = last
Q[last] = value
end
function queue.pop(Q)
local first = Q.first
local last = Q.last
if first > last then error("Q is empty") end
local value = Q[first]
Q[first] = nil
if first >= last then
Q.first = 1
Q.last = 0
else
Q.first = first + 1
end
return value
end
function queue.size(Q)
local first,last = Q.first,Q.last
print(string.format("(%d,%d)",first,last))
if (last < first) then return 0 end
return last-first+1
end
nq = queue.new()
print("q'size1="..queue.size(nq))
-- queue.pop(nq)
for i = 1, 10 ,2 do
queue.push( nq, i)
end
print("q'size2="..queue.size(nq))
for m = nq.first,nq.last do
print(""..m.."]="..nq[m])
end
print("first "..nq[nq.first])
local v
v = nq.first print(" v1 =".. v)
v = queue.pop(nq) print("pop = "..v)
v = nq.first print(" v2 =".. v)
v = queue.pop(nq) print("pop = "..v)
for m = nq.first,nq.last do
print(""..m.."]="..nq[m])
end
local n = queue.size(nq)
print("q'size3="..n)
for i=1,n do
v=queue.pop(nq)
print(""..i.."]="..v)
end
print("q'size4="..queue.size(nq))
print("#nq="..#nq)
[/code]
---- output ----
(1,0)
q'size1=0
(1,5)
q'size2=5
1]=1
2]=3
3]=5
4]=7
5]=9
first 1
v1 =1
pop = 1
v2 =2
pop = 3
3]=5
4]=7
5]=9
(3,5)
q'size3=3
1]=5
2]=7
3]=9
(1,0)
q'size4=0
#nq=0
2014年9月27日 星期六
訂閱:
文章 (Atom)
車 和 東 , 兩個 不喜歡的 簡體字 寫法
车 是 草書 形變, 很難 和 小孩 解釋 為什麼 長這樣(反正你就背), 反而 車 就 很形象. 东 是 草書 形變, 很難 和 小孩 解釋 為什麼 長這樣( 反正你就背), (古人觀察到 日出東方, 東 是 木頭 加 日 , 那個方向 是 東.
-
在 ~/.bash_rc 內加入以下 function 即可在新開的 terminal 中, 用 .. N 快速切換到祖先目錄. FYI: cd - 可以來回切換前後目錄. toN() # toN num default { test ${1} || retur...
-
### Installing Python 3.8 on Ubuntu 18.04 from Source ### $ sudo apt update $ sudo apt install build-essential zlib1g-dev libncurses5-dev li...
-
台灣 2025年 前3季行人 死亡數 比去年同期 增4% . 為宣傳政蹟, 搏版面, 過度強調 行人帝王條款 , 不知 很多人 都只聽 權利 , 而 忽略 馬路如虎口 , 身體是自己的 , 不要以身犯險 .