39
правок
Изменения
Дек
,Нет описания правки
* <tex>\mathtt{d.tail}</tex> {{---}} индекс хвоста дека.
Дек состоит из элементов <tex>\mathtt {d[d.tail\dots d.head]}</tex>. Если очень много раз добавлять в начало и столько же раз удалять конечные элементы, то скоро мы дойдем до границы, имея немного элементов, при этом добавление в начало вызовет переполнение (в данной реализации во внимание Всего дек способен вместить не берется). Если в деке верно равенство более <tex>\mathtt{d.tail = d.head}n</tex>элементов, то такой дек пуст поэтому при переполнении приходится перевыделять память и изъятие из него может привести к ошибкекопировать все элементы.
'''boolean''' empty():
'''return''' d.head%n+1 == d.tail
'''function''' pushBack(x : '''T'''):
'''if''' (d.head == d.tail)
'''return''' error "overflow"
d[d.tail] = x
d.tail = (d.tail - 2 + n) % n + 1
'''T''' popBack():
'''if''' (empty())
'''return''' error "underflow"
d.tail = d.tail % n + 1
'''return''' d[d.tail]
'''function''' pushFront(x : '''T'''):
'''if''' (d.head == d.tail)
'''return''' error "overflow"
d[d.head] = x
d.head = d.head % n + 1
'''T''' popFront():
'''if''' (empty())
'''return''' error "underflow"
d.head = (d.head - 2 + n) % n + 1
'''return''' d[d.head]
Все операции выполняются за <tex>O(1)</tex>.