Изменения

Перейти к: навигация, поиск

Стек

317 байт убрано, 21:31, 11 июня 2012
На списке
<wikitex>Стек можно реализовать и на списке. Для этого необходимо создать список и операции работы стека на созданном списке. Ниже представлен пример реализации стека на односвязном списке. Стек будем "держать" за голову. Добавляться новые элементы посредством операции $push$ будут перед головой, сами при этом становясь новой головой, а элементом для изъятия из стека с помощью $pop$ будет текущая голова. После вызова функции $push$ текущая голова уже станет старой и будет являться следующим элементом за добавленным, то есть ссылка на следующий элемент нового элемента будет указывать на старую голову. После вызова функции $pop$ будет получена и возвращена информация, хранящаяся в текущей голове. Сама голова будет изъята из стека, а новой головой станет элемент, который следовал за изъятой головой.
struct ListItem int data ListItem* next ListItem() data = -1 next = NULL struct Stack ListItem* head Stack() head = new ListItem() void push(int element) ListItem* NewHead = new ListItem() ListItem* OldHead = new ListItem() OldHead = head; NewHead->.data = element NewHead->.next = OldHead head = NewHead; pop() int element = head->data head = head->next return element
Здесь видно, что pop() int element = head.data head = head.next return element В реализации на списке, кроме самих данных, используются хранятся указатели на следующие элементы, которых столько же, сколько и элементов.
</wikitex>
285
правок

Навигация