Изменения

Перейти к: навигация, поиск

Дек

519 байт добавлено, 02:02, 6 января 2016
Нет описания правки
* <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 
=== На двух стеках ===
39
правок

Навигация