Возможно, вы можете реализовать N стеков или очередей в одном массиве. Мое определение использования одного массива состоит в том, что мы используем один массив для хранения всех данных всех стеков и очередей в одном массиве, в любом случае мы можем использовать другой массив N для отслеживания индексов всех элементов конкретного стека или очереди.
решение:
хранить данные последовательно в массиве во время вставки в любой стек или очередь. и сохраните его соответствующий индекс в массиве хранения индекса этого конкретного стека или очереди.
например: у вас есть 3 стека (s1, s2, s3), и вы хотите реализовать это, используя один массив (dataArray []). Следовательно, мы сделаем 3 других массива (a1 [], a2 [], a3 []) для s1, s2 и s3 соответственно, которые будут отслеживать все их элементы в dataArray [] путем сохранения их соответствующего индекса.
insert(s1, 10) at dataArray[0] a1[0] = 0;
insert(s2, 20) at dataArray[1] a2[0] = 1;
insert(s3, 30) at dataArray[2] a3[0] = 2;
insert(s1, 40) at dataArray[3] a1[1] = 3;
insert(s3, 50) at dataArray[4] a3[1] = 4;
insert(s3, 60) at dataArray[5] a3[2] = 5;
insert(s2, 30) at dataArray[6] a2[1] = 6;
и так далее ...
Теперь мы выполним операцию в dataArray [], используя a1, a2 и a3 для соответствующих стеков и очередей.
чтобы вытолкнуть элемент из s1
вернуть a1 [0]
сдвинуть все элементы влево
делает аналогичный подход и для других операций, и вы можете реализовать любое количество стеков и очередей в одном массиве.