Два стека в очереди определены как stack1 и stack2 .
Enqueue: euqueued элементы всегда помещаются в stack1
Dequeue: Верхняя часть stack2 может быть выдвинутым, поскольку это первый элемент, вставленный в очередь, когда stack2 не пуст. Когда stack2 пусто, мы извлекаем все элементы из stack1 и помещаем их в stack2 по одному. Первый элемент в очереди помещается в нижнюю часть stack1 . Его можно вытолкнуть сразу после операций выталкивания и нажатия, поскольку он находится на вершине стека stack2 .
Ниже приведен тот же пример кода C ++:
template class CQueue
{
public:
CQueue(void);
~CQueue(void);
void appendTail(const T& node);
T deleteHead();
private:
stack stack1;
stack stack2;
};
template void CQueue::appendTail(const T& element) {
stack1.push(element);
}
template T CQueue::deleteHead() {
if(stack2.size()<= 0) {
while(stack1.size()>0) {
T& data = stack1.top();
stack1.pop();
stack2.push(data);
}
}
if(stack2.size() == 0)
throw new exception("queue is empty");
T head = stack2.top();
stack2.pop();
return head;
}
Это решение заимствовано из моего блога . Более подробный анализ с пошаговым моделированием работы доступен на моей странице в блоге.
Я решил эту проблему, зайдя в настройки ярлыков Ubuntu (System Settings > Keyboard > Shortcuts
) и просто создав пользовательский ярлык с помощью команды / usr / bin / sublime, затем дважды щелкнув мышью на области «Отключено» и нажав Клавиши Ctrl kbd> + Alt kbd> + S kbd>.
Изменение чего-либо в gconf-editor под пользователем & amp; root-доступ ничего не изменил.
Трудно сказать, что происходит без глубокого изучения вашей конфигурации. НО попробуйте использовать gconf-editor для просмотра / apps / metacity / window_keybindings на предмет «toggle_shaded». Обычно это Ctrl + Alt + S. Если вы не используете менеджер окон metacity, тогда это изменение ничего не изменит.