Изменения

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

Стек

Нет изменений в размере, 23:06, 11 июня 2014
На саморасширяющемся массиве
===На саморасширяющемся массиве===
<wikitex>Возможна реализация стека на [[Саморасширяющийся_массив|векторе]]. Для этого нужно создать вектор и определить операции стека на нём. В функции <math> \mathrm {push} </math> Перед тем, как добавить новый элемент, будем проверять, не нужно ли расширить массив вдвое, а в <math> \mathrm {pop} </math>, перед тем, как изъять элемент из массива, {{---}} не нужно ли вдвое сузить размер вектора. Ниже приведён пример реализации на векторе.
 
'''function''' push(e):
'''if''' n == s - 1
w = new int[s * 2]
'''for''' i = 0 '''to''' s
w[i] = v[i]
delete v
v = w
s = s * 2
n++
v[n] = e
'''integer''' pop():
size = size / 2
'''return''' v[r]
 
'''function''' push(e):
'''if''' n == s - 1
w = new int[s * 2]
'''for''' i = 0 '''to''' s
w[i] = v[i]
delete v
v = w
s = s * 2
n++
v[n] = e
</wikitex>
215
правок

Навигация