Detta är dokumentationssidan för Modul:queue

Syfte redigera

Den här modulen innehåller en generell implementering av en Single Queue-datastruktur för moduler som har nytta av det.

Användning redigera

local Queue = require("Modul:queue") --importerar Queue-datastrukturen
local q = Queue()                    --skapar en ny "instans" q
Queue.enqueue(q, "abc")              --lägger till elementet "abc" i kön q

Specifikation redigera

Publika funktioner:
  • enqueue("abc") Lägger till elemenet "abc" i kön.
  • dequeue() Tar bort det första elementet från kön och returnerar det, det vill säga "Först in, först ut". Om kön är tom returneras nil.
  • peek(index) Returnerar elementet som befinner sig på position index i kön. 1 är det första elementet. Om värdet på index är negativt returneras elementet som befinner sig på position index i kön räknat bakifrån. -1 är det sista elementet. Värdet på index kan inte vara 0 eller utanför köns omfång. Då returneras nil.
  • peekFirst() Samma som peek(1).
  • peekSecond() Samma som peek(2).
  • peekLast() Samma som peek(-1).
  • isEmpty() Returnerar true om kön är tom, annars false.
  • length() Returnerar köns längd, dvs köns totala antal element.

Tester redigera

All tests passed. (refresh)

Text Expected Actual
test01_enqueue:
  mut.enqueue(q) (nil) (nil)
Text Expected Actual
test02_empty_queue:
  mut.isEmpty(q) true true
  mut.length(q) 0 0
  mut.peekFirst(q) (nil) (nil)
  mut.peekSecond(q) (nil) (nil)
  mut.peekLast(q) (nil) (nil)
  mut.peek(q, 1) (nil) (nil)
  mut.peek(q, 0) (nil) (nil)
  mut.peek(q, -1) (nil) (nil)
  mut.dequeue(q) (nil) (nil)
Text Expected Actual
test03_one_element_added:
  mut.isEmpty(q) false false
  mut.length(q) 1 1
  mut.peekFirst(q) one one
  mut.peekSecond(q) (nil) (nil)
  mut.peekLast(q) one one
  mut.peek(q, 1) one one
  mut.peek(q, -1) one one
  mut.dequeue(q) one one
Text Expected Actual
test04_two_elements_added:
  mut.isEmpty(q) false false
  mut.length(q) 2 2
  mut.peekFirst(q) one one
  mut.peekSecond(q) two two
  mut.peekLast(q) two two
  mut.peek(q, 1) one one
  mut.peek(q, 2) two two
  mut.peek(q, -1) two two
  mut.peek(q, -2) one one
Text Expected Actual
test05_four_elements_added:
  mut.length(q) false false
  mut.length(q) 4 4
  mut.peekFirst(q) one one
  mut.peekSecond(q) two two
  mut.peekLast(q) four four
  mut.peek(q, 1) one one
  mut.peek(q, 4) four four
  mut.peek(q, 5) (nil) (nil)
  mut.peek(q, 0) (nil) (nil)
  mut.peek(q, -1) four four
  mut.peek(q, -4) one one
  mut.peek(q, -5) (nil) (nil)
Text Expected Actual
test06_multiple:
  mut.dequeue(q) (nil) (nil)
  mut.length(q) true true
  mut.length(q) 0 0
  mut.enqueue(q, "one") (nil) (nil)
  mut.enqueue(q, "two") (nil) (nil)
  mut.length(q) 2 2
  mut.dequeue(q) one one
  mut.length(q) 1 1
  mut.enqueue(q, "three") (nil) (nil)
  mut.enqueue(q, "four") (nil) (nil)
  mut.length(q) 3 3
  mut.dequeue(q) two two
  mut.peekFirst(q) three three
  mut.peekSecond(q) four four
  mut.peekLast(q) four four
  mut.length(q) 2 2
  mut.dequeue(q) three three
  mut.dequeue(q) four four
  mut.length(q) true true
  mut.dequeue(q) (nil) (nil)
  mut.length(q) 0 0