Другие языки программирования и технологии
вопрос про стеки и очереди в паскале/с++
Народ, подскажите пожалуйста что такое очереди и стеки? и приведите листинги процедур)
Ну вот пример метода объекта TStack, достающего из стека элемент (язык - FreePascal):
function TStack.Pop:variant;
var p:TPStackElement;
begin
if Empty then
raise Exception.Create('Cannot pop - stack is empty');
Result:=Head^.Value;
p:=Head;
Head:=Head^.Next;
Dispose(p);
end;
Или метод очистки стека:
procedure TStack.Clear;
begin
while not Empty do Pop;
end;
Только в отрыве от остального контекста оно тебе не поможет.. . Поищи нормальную инфу по динамическим структурам данных в паскале, врубись в то, что такое структура, указатель на структуру, как динамически выделяется и освобождается память - иначе все равно не поймешь ничего, и приведенные примеры это демонстрируют. Хотя бы что такое "^" уясни.
function TStack.Pop:variant;
var p:TPStackElement;
begin
if Empty then
raise Exception.Create('Cannot pop - stack is empty');
Result:=Head^.Value;
p:=Head;
Head:=Head^.Next;
Dispose(p);
end;
Или метод очистки стека:
procedure TStack.Clear;
begin
while not Empty do Pop;
end;
Только в отрыве от остального контекста оно тебе не поможет.. . Поищи нормальную инфу по динамическим структурам данных в паскале, врубись в то, что такое структура, указатель на структуру, как динамически выделяется и освобождается память - иначе все равно не поймешь ничего, и приведенные примеры это демонстрируют. Хотя бы что такое "^" уясни.
стеки, как бы, бывают двух видов: фифо -- труба, в которую суют с одного конца и вываливается с другого, и лифо -- гора мытых тарелок.
Sergey V. Voronin, отнюдь.
Стеки и очереди относятся к спискам - упорядоченным наборам элементов. И стек, и очередь хранят все элементы, попавшие в них. В общем случае, они поддерживают две операции: добавить элемент и извлечь элемент. Разница появляется в последней операции: стек извлекает последний добавленный элемент, а очередь - первый.
Типичный пример стека - автоматный рожок. Вы можете добавлять патроны и извлекать их. Последним будет извлечён патрон, добавленный первым.
Типичный пример очереди - очередь за водкой на Новый Год. Первым с водкой свалит тот, кто пришёл первым.
Стеки и очереди относятся к спискам - упорядоченным наборам элементов. И стек, и очередь хранят все элементы, попавшие в них. В общем случае, они поддерживают две операции: добавить элемент и извлечь элемент. Разница появляется в последней операции: стек извлекает последний добавленный элемент, а очередь - первый.
Типичный пример стека - автоматный рожок. Вы можете добавлять патроны и извлекать их. Последним будет извлечён патрон, добавленный первым.
Типичный пример очереди - очередь за водкой на Новый Год. Первым с водкой свалит тот, кто пришёл первым.
Мне более приятна аналогия с горой помытой посуды. Самые верхние тарелки возьмут первыми.
Стек это как длинный ящик, в дно которого вставлена пружина
Например, пусть у нас есть стек из 4 ячеек
[ ] [ ] [ ] [ ]
Изначально все ячейки пусты. Запишем в 1 ячейку какое-то число а
[а] [ ] [ ] [ ]
Теперь запишем с
[с] [а] [ ] [ ]
Как видно, с "протолкнуло" а вглубь стека
Запишем еще 3 переменных: b, d, f
[c] [a] [ ] [ ] => [c] [a] [ ] => [d] [c] [a] => [f] [d] [c]
Как видим, а в стек не поместилось и "пало смертью храбрых"
Стоит также отметить чт стек использует принцип LIFO (last in first out) т. е. последняя записаная переменная смещает стек "вглубь" и становится на 1 место
Например, пусть у нас есть стек из 4 ячеек
[ ] [ ] [ ] [ ]
Изначально все ячейки пусты. Запишем в 1 ячейку какое-то число а
[а] [ ] [ ] [ ]
Теперь запишем с
[с] [а] [ ] [ ]
Как видно, с "протолкнуло" а вглубь стека
Запишем еще 3 переменных: b, d, f
[c] [a] [ ] [ ] => [c] [a] [ ] => [d] [c] [a] => [f] [d] [c]
Как видим, а в стек не поместилось и "пало смертью храбрых"
Стоит также отметить чт стек использует принцип LIFO (last in first out) т. е. последняя записаная переменная смещает стек "вглубь" и становится на 1 место
Похожие вопросы
- Вопрос о стеке и куче
- Вопрос про программирование: Я начал изучать Паскаль, потом планирую изучать Delphy, а вот что дальше изучать не знаю.
- Вопрос по С++. Стек
- Можно ли сказать, что стек - временный участок памяти, в котором данные хранятся по принципу LIFO(last in first out)?
- Помогите, пожалуйста, найти ошибку в программе сортировки стека (по убыванию ) на Си.
- [Pascal] Создать очередь в виде кольцевого массива. Скопировать содержимое очереди в стек, который тоже в виде массива.
- Переменные и стек
- Товарищи программисты на Delphi и Pascal помогите девушке!!!)) вопрос глупый..насчет паскаля..
- Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался.
- Помогите, пожалуйста, работа со стеками в среде С++.