Алгоритмы и структуры данных для начинающих: стеки и очереди


Download 81.5 Kb.
bet1/10
Sana04.02.2023
Hajmi81.5 Kb.
#1162666
TuriЛекция
  1   2   3   4   5   6   7   8   9   10
Bog'liq
Алгоритмы и структуры данных для начинающих


Алгоритмы и структуры данных для начинающих: стеки и очереди
31

В предыдущих частях мы рассматривали базовые структуры данных, которые, по сути, являлись надстройками над массивом. В этой статье мы добавим к коллекциям простые операции и посмотрим, как это повлияет на их возможности.


Также смотрите другие материалы этой серии: бинарное дереводинамический массивсвязный списокоценка сложности алгоритмасортировка и множества.
Стек
Стек — это коллекция, элементы которой получают по принципу «последний вошел, первый вышел» (Last-In-First-Out или LIFO). Это значит, что мы будем иметь доступ только к последнему добавленному элементу.
В отличие от списков, мы не можем получить доступ к произвольному элементу стека. Мы можем только добавлять или удалять элементы с помощью специальных методов. У стека нет также метода Contains, как у списков. Кроме того, у стека нет итератора. Для того, чтобы понимать, почему на стек накладываются такие ограничения, давайте посмотрим на то, как он работает и как используется.
Наиболее часто встречающаяся аналогия для объяснения стека — стопка тарелок. Вне зависимости от того, сколько тарелок в стопке, мы всегда можем снять верхнюю. Чистые тарелки точно так же кладутся на верх стопки, и мы всегда будем первой брать ту тарелку, которая была положена последней.

Если мы положим, например, красную тарелку, затем синюю, а затем зеленую, то сначала надо будет снять зеленую, потом синюю, и, наконец, красную. Главное, что надо запомнить — тарелки всегда ставятся и на верх стопки. Когда кто-то берет тарелку, он также снимает ее сверху. Получается, что тарелки разбираются в порядке, обратном тому, в котором ставились.


Теперь, когда мы понимаем, как работает стек, введем несколько терминов. Операция добавления элемента на стек называется «push», удаления — «pop». Последний добавленный элемент называется верхушкой стека, или «top», и его можно посмотреть с помощью операции «peek». Давайте теперь посмотрим на заготовку класса, реализующего стек.
Класс Stack
Класс Stack определяет методы Push, Pop, Peek для доступа к элементам и поле Count. В реализации мы будем использовать LinkedList для хранения элементов.
public class Stack
{
LinkedList _items = new LinkedList();

public void Push(T value)


{
throw new NotImplementedException();
}

public T Pop()


{
throw new NotImplementedException();
}

public T Peek()


{
throw new NotImplementedException();
}

public int Count


{
get;
}
}

Download 81.5 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling