Если вы пытаетесь реализовать его таким образом, чтобы обе стеки начинались с левой стороны массива. Push и pop не будут O (1). Поскольку элементы обоих стеков будут перемешаны между собой, и вы должны поддерживать, принадлежит ли позиция стеку1 или стеке2, и если оно пустое (перечисление).
Когда вы пытаетесь вставить элемент в один из стека, вам нужно найти пустой слот и поместить туда значение (для этого вы могли бы пропустить элементы другого стека, которые будут находиться между ними) ,
Когда вы пытаетесь удалить элемент из одного из стека, вы должны пометить элемент как пустой и найти элемент в левой части выбитого элемента, который принадлежит к соответствующему стеку, и сделать его вершиной стек.
А также для проверки полного или пустого его лучше проверить с суммой элементов в обоих стеках.
Push и Pop будут O (n) вместо того, что вы хотите, как O (1).
Если вы все еще хотите реализовать push и pop в O (1) и оба стека с той же стороны массива, я предлагаю вам поддерживать верхнюю часть стеков, следующий свободный индекс и предыдущий/(следующий свободный индекс) для каждый элемент.
Если элемент занят, он укажет на предыдущий индекс в стеке, если он свободен, он будет содержать следующий свободный индекс.
Ex: free = 0; top1 = -1, -1 = top2 следующая [I] = I + 1 следующая [п-1] = -1 изначально
проверка на полную это просто полный == -1
проверка на пустоту стека будет быть top1 == -1
вставка х в верхней 1
a[free] = x
next[free] = top1 // useful while poping
top1 = free
free = next[free]
выскакивают из STACK1
temp = top1 // storing top since we have to make this index as free and point next of this index to previous free
top1 = next[top1] // setting previous element as top
next[temp] = free
free = temp
Drawback для этого Мы используем O (n) дополнительную память
Заполните массив с противоположных концов. top1 = 1 и top2 = n. Когда PUSH вызывается с top1 = top2, переполнение. POP1 должен только уменьшать top1, а POP2 должен только увеличивать POP2. – ogogmad
Что я знаю ... но я искал другую реализацию «одного массива два стека ..». Итак, я спрашиваю: «Этот алгоритм удовлетворяет условиям O (1) и переполнению»? – avantika
строка 1 из STACK-FULL не имеет смысла – ogogmad