Реализация очереди в сплав - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу использовать очередь в моей программе сплавов.Тем не менее, учебник, который я получил из Интернета , выглядит следующим образом:

Но здесь мы проверяем правильность нашей логики построения очереди или нет.Но я хочу управлять своими элементами в очереди, используя функции enqueue, dequeue, size.Я застрял, как это сделать.Пока у меня есть следующее решение для достижения моей цели.Но я не уверен, правильно это или нет.Или как вызвать эти функции из моего кода.

sig Queue { root: Node }

sig Node { next: lone Node }

fun Enqueue[q, q': Queue, n: Node] : Node {
  q'.root = n and n.next = q.root
  n
}

fun Dequeue[q, q': Queue]: Node { 
  n = q.root.next and q'root = n
  q.root
}


fun size[q: Queue]: Int{
    #q.node
}
...