215
правок
Изменения
Стек
,→На саморасширяющемся массиве
===На саморасширяющемся массиве===
<wikitex>Возможна реализация стека на [[Саморасширяющийся_массив|векторе]]. Для этого нужно создать вектор и определить операции стека на нём. В функции $<math> \mathrm {push$ } </math> Перед тем, как добавить новый элемент, будем проверять, не нужно ли расширить массив вдвое, а в $<math> \mathrm {pop$} </math>, перед тем, как изъять элемент из массива, — не нужно ли вдвое сузить размер вектора. Ниже приведён пример реализации на векторе.
'''function''' pop(): r = n n-- '''if ''' (n < size / 4) w = new int[size / 2] '''for ''' i = 0 to size / 4: w[i] = v[i] delete v v = w 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>