В то время как вы получите много сообщений, связанных с реализацией очереди с двумя стеками: 1. Либо сделав процесс enQueue намного более дорогостоящим 2. Или сделав процесс deQueue намного более дорогим
https://www.geeksforgeeks.org/queue-using-stacks/
Один важный способ, который я узнал из вышеприведенного поста, заключался в построении очереди только со структурой данных стека и вызовом рекурсии стек.
Хотя можно утверждать, что буквально это все еще использует два стека, но в идеале это использует только одну структуру данных стека.
Ниже приводится объяснение проблемы:
Объявите один стек для постановки и обработки данных и поместите данные в стек.
в то время как у deQueueing есть базовое условие, когда элемент стека выскакивает, когда размер стека равен 1. Это обеспечит отсутствие переполнения стека во время рекурсии deQueue.
При удалении очереди сначала вытолкнуть данные из верхней части стека. В идеале этот элемент будет элементом, который присутствует в верхней части стека. Теперь, когда это будет сделано, рекурсивно вызовите функцию deQueue, а затем вставьте элемент, расположенный выше, обратно в стек.
Код будет выглядеть следующим образом:
if (s1.isEmpty())
System.out.println("The Queue is empty");
else if (s1.size() == 1)
return s1.pop();
else {
int x = s1.pop();
int result = deQueue();
s1.push(x);
return result;
Таким образом, вы можете создать очередь, используя структуру данных с одним стеком и стек вызовов рекурсии.
Посмотрите Rhino или Spidermonkey . Возможно, вы захотите воспользоваться реализацией стандарта ServerJS , например Narwhal , пока вы на нем.
As for the engine - it's actually built in Windows itself and IE just uses it for webpages. Try it - you can make a simple .js
file and run it. It's a great replacement for .bat
files actually. :) You can also cscript.exe
(for console) and wscript.exe
(for windows app) to run your scripts. It's actually what Windows internally runs when you double-click a .js
file.
As for debugging - I don't know. I know that:
cscript.exe
and wscipt.exe
have command-line parameters that have something to do with script debugging, although I don't know what they do. Вы также можете попробовать движок JavaScript Google Chrome, V8:
http://code.google.com/p/v8/
Rhino - это реализация JavaScript с открытым исходным кодом, полностью написанная на Java.
Многие здесь рекомендовали Rhino или другие серверные реализации. Но из того, что я прочитал, вам нужно что-то, что должно имитировать среду браузера. В этом отношении я бы попробовал (это означает, что я не использовал эту комбинацию раньше) - это Mozilla Rhino и env.js . В то время как я' Я уже довольно давно использую Mozilla Rhino, не могу сказать слишком много о env.js.
env.js - это эмуляция среды браузера. Первоначально он был разработан Джоном Ресигом, но Крис Тэтчер заставил его выглядеть так, как есть сейчас. Что, на мой взгляд, выглядит очень многообещающим. Раньше не пробовал, но дал бы шанс.
Недавно я узнал, что если у вас установлена Visual Studio, вы можете отлаживать JScripts с ее помощью, вызывая сценарий вроде cscript test.js // X
, который открывает Окно отладчика Just In Time.
Затем вы можете пошагово выполнять сценарий со всеми преимуществами настоящего отладчика.
Используя Rhino или SpiderMonkey, вы можете иметь автономный движок JS или включать его в другие приложения, которые вы пишете; но вы не сможете протестировать что-либо, связанное с объектной моделью документа (DOM), например, манипулирование элементами и атрибутами или реагирование на события.
Все, что связано с DOM, предоставляется браузером в качестве среды хоста в котором работает движок JavaScript. Отсутствие браузера означает отсутствие DOM.
Если код, над которым вы планируете работать, абсолютно не зависит от чего-либо, предоставляемого средой браузера, вы можете начать с просмотра Rhino Shell .
EDIT : JScript от Microsoft также является автономным COM-компонентом, который можно запускать на Windows Script Host .
У меня был похожий вопрос, который не был слишком многообещающим: Есть ли IDE Javascript, не имеющая ничего общего с браузером?
Я думаю, что лучший ответ был Mozilla Rhino - хотя для ваших целей пакет, связанный с серверным javascript , может соответствовать всем требованиям. Обычно они используют двигатели Rhino или Spidermonkey, а также несколько других случайных.