Другие языки программирования и технологии

вопрос про стеки и очереди в паскале/с++

Народ, подскажите пожалуйста что такое очереди и стеки? и приведите листинги процедур)
Ваня Щукин
Ваня Щукин
79
Ну вот пример метода объекта 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;

Только в отрыве от остального контекста оно тебе не поможет.. . Поищи нормальную инфу по динамическим структурам данных в паскале, врубись в то, что такое структура, указатель на структуру, как динамически выделяется и освобождается память - иначе все равно не поймешь ничего, и приведенные примеры это демонстрируют. Хотя бы что такое "^" уясни.
Иван Колосов
Иван Колосов
76 658
Лучший ответ
стеки, как бы, бывают двух видов: фифо -- труба, в которую суют с одного конца и вываливается с другого, и лифо -- гора мытых тарелок.
Игорь Яицкий
Игорь Яицкий
65 823
Sergey V. Voronin, отнюдь.
Стеки и очереди относятся к спискам - упорядоченным наборам элементов. И стек, и очередь хранят все элементы, попавшие в них. В общем случае, они поддерживают две операции: добавить элемент и извлечь элемент. Разница появляется в последней операции: стек извлекает последний добавленный элемент, а очередь - первый.
Типичный пример стека - автоматный рожок. Вы можете добавлять патроны и извлекать их. Последним будет извлечён патрон, добавленный первым.
Типичный пример очереди - очередь за водкой на Новый Год. Первым с водкой свалит тот, кто пришёл первым.
Мне более приятна аналогия с горой помытой посуды. Самые верхние тарелки возьмут первыми.
Е.
Евгений .
1 346
Стек это как длинный ящик, в дно которого вставлена пружина
Например, пусть у нас есть стек из 4 ячеек
[ ] [ ] [ ] [ ]
Изначально все ячейки пусты. Запишем в 1 ячейку какое-то число а
[а] [ ] [ ] [ ]
Теперь запишем с
[с] [а] [ ] [ ]
Как видно, с "протолкнуло" а вглубь стека
Запишем еще 3 переменных: b, d, f
[c] [a] [ ] [ ] => [c] [a] [ ] => [d] [c] [a] => [f] [d] [c]
Как видим, а в стек не поместилось и "пало смертью храбрых"
Стоит также отметить чт стек использует принцип LIFO (last in first out) т. е. последняя записаная переменная смещает стек "вглубь" и становится на 1 место