39
 правок
Изменения
Дек
,Нет описания правки
* <tex>\mathtt{capacity}</tex> {{---}} размер массива.
Если реализовывать дек на динамическом массиве, то мы можем избежать ошибки переполнения. При выполнении операций <tex>\mathtt{pushBack<}/tex> и <tex>\mathtt{pushFront}</tex> происходит проверка на переполнение и, если нужно, выделяется большее количество памяти под массив. Также проверяем, не нужно ли нам уменьшить размер массива при выполнении операций <tex>\mathtt{popBack}</tex> и <tex>\mathtt{popFront}</tex>. Для удобства выделим в отдельную функцию <tex>\mathtt{size}</tex> получение размера дека.
 '''int''' size()
* <tex>\mathtt{head}</tex> {{---}} ссылка на голову.
Дек очень просто реализуется на двусвязном списке. Элементы всегда добавляются либо в <tex>\mathtt{tail.prev}</tex>, либо в <tex>\mathtt{head.next}</tex>.В данной реализации не учитывается пустой дек.    '''function''' pushBack(x : '''T'''):   tail = ListItem(x, tail, null)   tail.next.prev = tail  '''T''' popBack():   data = tail.data   tail = tail.next   '''return''' data  '''function''' pushFront(x : '''T'''):   head = ListItem(x, null, front)   head.prev.next = head  '''T''' popFront():   data = head.data   head = head.prev   '''return''' data 
=== На двух стеках ===