Изменения

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

Дек

688 байт добавлено, 22:22, 13 декабря 2015
Нет описания правки
=== На массиве ===
Ключевые поля:
* <tex>\mathtt{d[1\dots n]} </tex> {{---}} массив, с помощью которого реализуется дек, способный вместить не более <tex>n</tex> элементов,
* <tex>\mathtt{d.head}</tex> {{---}} индекс головы дека,
* <tex>\mathtt{d.tail}</tex> {{---}} индекс хвоста дека.
Дек состоит из элементов <tex>\mathtt {sd[d.tail\dots d.head]}</tex>. Если очень много раз добавлять в начало и столько же раз удалять конечные элементы, то скоро мы дойдем до границы, имея немного элементов, при этом добавление в начало вызовет переполнение(в данной реализации во внимание не берется). Поэтому имеет смысл брать индексы по модулю Если в деке верно равенство <tex> \mathtt{nd.tail = d.head} </tex> , то такой дек пуст и следитьизъятие из него может привести к ошибке.---Все операции выполняются за <tex>\mathtt{O(1)}</tex>.=== На саморасширяющемся массиве ===---=== На списке ===Ключевые поля:* <code>ListItem(data : '''T''', next : '''ListItem''', чтобы они были не меньше единицыprev : '''ListItem''')</code> {{---}} конструктор,* <tex>\mathtt{tail}</tex> {{---}} ссылка на хвост,* <tex>\mathtt{head}</tex> {{---}} ссылка на голову. Дек очень просто реализуется на списке. Элементы всегда добавляются либо в <tex>\mathtt{tail. Если происходит изъятие и стекаprev}</tex>, либо в котором индексы равны<tex>\mathtt{head.next}</tex>.=== На двух стеках ===
39
правок

Навигация