Время сложностей было бы хуже, хотя. Хорошая реализация очереди делает все в постоянное время.
Редактировать
Не уверен, почему мой ответ был здесь опущен. Если мы программируем, мы заботимся о сложности времени, и использование двух стандартных стеков для создания очереди неэффективно. Это очень актуальный и актуальный момент. Если кто-то еще будет нуждаться в этом, мне было бы интересно узнать почему.
Немного подробнее : почему использование двух стеков хуже, чем просто очереди: если вы используете два стека, и кто-то вызывает dequeue, пока исходящий ящик пуст, вам нужно линейное время, чтобы добраться до нижняя часть почтового ящика (как вы можете видеть в коде Дейва).
Вы можете реализовать очередь в виде односвязного списка (каждый элемент указывает на следующий вставленный элемент), сохраняя дополнительный указатель на последний вставленный элемент для толчков (или делая его циклическим списком). Реализация очереди и очереди для этой структуры данных очень проста в постоянном времени. Это наихудшее постоянное время, не амортизируется. И, как кажется, в комментариях просят дать такое пояснение, постоянное время в худшем случае строго лучше, чем амортизированное постоянное время.
В ubuntu установка vim по умолчанию происходит из пакета vim-tiny
, но это еще не все.
Вы, вероятно, захотите:
apt-get install vim
или
apt-get install vim-full
Некоторые из ваших других проблем похожи на проблемы с клавишей Backspace и другими вещами. Как только вы получите полную версию vim, попробуйте добавить их в свой .vimrc:
set nocompatible
set t_kb=^H
fixdel
(ВАЖНОЕ ПРИМЕЧАНИЕ: ^ H - это буквальный символ ctrl-H, который вы получите, нажав Ctrl-V Ctrl-H во вставке режим)
I'll assume you mean VIM when you say VI? And at least, the 2nd point seems to be a console/terminal issue with VIM/term combo. The page below suggests some fixes, but none that I could make work (I use vim over putty to an Ubuntu dev box)
http://vim.wikia.com/wiki/Fix_broken_arrow_key_navigation_in_insert_mode
3rd point can be overwritten by using the following in your .vimrc
set backspace=indent,eol,start
(1) Проверьте, отличается ли параметр showmode
на обоих.
(2) Не знаю об этом, я думаю, что это больше связано с терминалом, чем с самой Vi.
В CentOS vi - это псевдоним другой программы, vim, но в последних версиях Ubuntu vi означает просто vi, а не vim. Разницу вы увидите, если разницу между двумя разными программами, vi и vim.
Если вам нравится vim, просто запустите vim, а не vi. Это работает и в Ubuntu
В дополнение к установке vim-full, если у вас еще нет ~ / .vimrc
:
$ cp /usr/share/vim/vimcurrent/vimrc_example.vim ~/.vimrc
Этот пример .vimrc
уже выполняет самые важные настройки и является хорошим началом для настройки.