трактор: 3
яблоко: 4
Класс Stack
Как должно быть известно большинству читателей,
Класс коллекции, поддерживающий стек, носит название Stack. В нем реализуются интерфейсы ICollection, IEnumerable и ICloneable. Этот класс создает динамическую коллекцию, которая расширяется по мере потребности хранить в ней вводимые элементы. Всякий раз, когда требуется расширить такую коллекцию, ее емкость увеличивается вдвое.
В классе Stack определяются следующие конструкторы.
public Stack()
public Stack(int
В первой форме конструктора создается пустой стек, во второй форме — пустой стек, первоначальный размер которого определяет первоначальная емкость, задаваемая параметром
В классе Stack определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса приведены в табл. 25.7. Эти методы обычно применяются следующим образом. Для того чтобы поместить объект на вершине стека, вызывается метод Push (). А для того чтобы извлечь и удалить объект из вершины стека, вызывается метод Pop (). Если же объект требуется только извлечь, но не удалить из вершины стека, то вызывается метод Реек (). А если вызвать метод Pop () или Реек (), когда вызывающий стек пуст, то сгенерируется исключение InvalidOperationException.
Таблица 25.7. Наиболее часто используемые методы, определенные в классе Stack
Метод
Описание
public virtual void Clear ()
public virtual bool Contains (object
public virtual object Peek()
public virtual object Pop()
public virtual void Push (object
public virtual object[] ToArray()
Устанавливает свойство Count равным нулю, очищая, по существу, стек
Возвращает логическое значение true, если объект
Возвращает элемент, находящийся на вершине стека, удаляя его по ходу дела Помещает объект
Возвращает синхронизированный вариант коллекции типа Stack, передаваемой в качестве параметра
Возвращает массив, содержащий копии элементов вызывающего стека
В приведенном ниже примере программы создается стек, в который помещается несколько целых значений, а затем они извлекаются обратно из стека.
// Продемонстрировать применение класса Stack.
using System;
using System.Collections;
class StackDemo {
static void ShowPush(Stack st, int a) { st.Push(a);
Console.WriteLine('Поместить в стек: Push(' + a + ')'); Console.Write('Содержимое стека: '); foreach(int i in st)
Console.Write(i + ' ');
Console.WriteLine();
}
static void ShowPop(Stack st) {
Console.Write('Извлечь из стека: Pop -> '); int a = (int) st.PopO;
Console.WriteLine(а);
