Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
32
Task/Queue-Usage/CoffeeScript/queue-usage-1.coffee
Normal file
32
Task/Queue-Usage/CoffeeScript/queue-usage-1.coffee
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# We build a Queue on top of an ordinary JS array, which supports push
|
||||
# and shift. For simple queues, it might make sense to just use arrays
|
||||
# directly, but this code shows how to encapsulate the array behind a restricted
|
||||
# API. For very large queues, you might want a more specialized data
|
||||
# structure to implement the queue, in case arr.shift works in O(N) time, which
|
||||
# is common for array implementations. On my laptop I start noticing delay
|
||||
# after about 100,000 elements, using node.js.
|
||||
Queue = ->
|
||||
arr = []
|
||||
enqueue: (elem) ->
|
||||
arr.push elem
|
||||
dequeue: (elem) ->
|
||||
throw Error("queue is empty") if arr.length == 0
|
||||
arr.shift elem
|
||||
is_empty: (elem) ->
|
||||
arr.length == 0
|
||||
|
||||
# test
|
||||
do ->
|
||||
q = Queue()
|
||||
for i in [1..100000]
|
||||
q.enqueue i
|
||||
|
||||
console.log q.dequeue() # 1
|
||||
while !q.is_empty()
|
||||
v = q.dequeue()
|
||||
console.log v # 1000
|
||||
|
||||
try
|
||||
q.dequeue() # throws Error
|
||||
catch e
|
||||
console.log "#{e}"
|
||||
4
Task/Queue-Usage/CoffeeScript/queue-usage-2.coffee
Normal file
4
Task/Queue-Usage/CoffeeScript/queue-usage-2.coffee
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
> coffee queue.coffee
|
||||
1
|
||||
100000
|
||||
Error: queue is empty
|
||||
Loading…
Add table
Add a link
Reference in a new issue