-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path14-02_double_queue_modified.lua
More file actions
92 lines (85 loc) · 2.16 KB
/
14-02_double_queue_modified.lua
File metadata and controls
92 lines (85 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
function listNew ()
return {first = 0, last = 0}
end
function pushFirst (list, value)
local first = list.first - 1
if(list.first == 0 and list.last == 0 and list[0] == nil) then
first = 0
end
list.first = first
list[first] = value
io.write(string.format("pushFirst: %s - first: %s - last: %s\n", value, list.first, list.last))
end
function pushLast (list, value)
local last = list.last + 1
if(list.first == 0 and list.last == 0 and list[0] ~= nil) then
last = 0
end
list.last = last
list[last] = value
io.write(string.format("pushLast: %s - first: %s - last: %s\n", value, list.first, list.last))
end
function popFirst (list)
local first = list.first
if first == 0 and list.last == 0 and list[0] == nil then error("list is empty") end
local value = list[first]
list[first] = nil
if first + 1 > list.last then
list.first = 0
list.last = 0
else
list.first = first + 1
end
io.write(string.format("popfirst: %s - first: %s - last: %s\n", value, list.first, list.last))
return value
end
function popLast (list)
local last = list.last
if list.first == 0 and last == 0 and list[0] == nil then error("list is empty") end
local value = list[last]
list[last] = nil
if list.first > last - 1 then
list.first = 0
list.last = 0
else
list.last = last - 1
end
io.write(string.format("popLast: %s - first: %s - last: %s\n", value, list.first, list.last))
return value
end
function printList (list)
if list.first == 0 and list.last == 0 then
io.write("deque empty")
else
for i = list.first, list.last do
io.write(list[i].." ")
end
end
io.write("\n")
end
list = listNew()
pushFirst(list, 3)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
pushFirst(list, 2)
popLast(list)
popFirst(list)
printList(list)