Читаем C# 4.0: полное руководство полностью

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


// Продемонстрировать применение класса 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.Pop();


    Console.WriteLine(а);

    Console.Write("Содержимое стека: ");

    foreach(int i in st)

      Console.Write(i + " ");


    Console.WriteLine();

  }


  static void Main() {

    Stack st = new Stack();


    foreach(int i in st)

      Console.Write(i + " ");


    Console.WriteLine();


    ShowPush(st, 22);

    ShowPush(st, 65);

    ShowPush(st, 91);

    ShowPop(st);

    ShowPop(st);

    ShowPop(st) ;

    try {

      ShowPop(st) ;

    } catch (InvalidOperationException) {

      Console.WriteLine("Стек пуст.");

    }

  }

}


Ниже приведен результат выполнения этой программы. Обратите внимание на то, как обрабатывается исключение InvalidOperationException, генерируемое при попытке извлечь элемент из пустого стека.



Поместить в стек: Push(22)

Содержимое стека: 22

Поместить в стек: Push(65)

Содержимое стека: 65 22

Поместить в стек: Push(91)

Содержимое стека: 91 65 22

Извлечь из стека: Pop -> 91

Содержимое стека: 65 22

Извлечь из стека: Pop -> 65

Содержимое стека: 22

Извлечь из стека: Pop -> 22

Содержимое стека:

Извлечь из стека: Pop -> Стек пуст.


Класс Queue

Еще одной распространейной структурой данных является очередь, действующая по принципу: первым пришел — первым обслужен. Это означает, что первым из очереди извлекается элемент, помещенный в нее первым. Очереди часто встречаются в реальной жизни. Многим из нас нередко приходилось стоять в очередях к кассе в банке, магазине или столовой. В программировании очереди применяются для хранения таких элементов, как процессы, выполняющиеся в данный момент в системе, списки приостановленных транзакций в базе данных или пакеты данных, полученные по Интернету. Кроме того, очереди нередко применяются в области имитационного моделирования.

Класс коллекции, поддерживающий очередь, носит название Queue. В нем реализуются интерфейсы ICollection, IEnumerable и ICloneable. Этот класс создает динамическую коллекцию, которая расширяется, если в ней необходимо хранить вводимые элементы. Так, если в очереди требуется свободное место, ее размер увеличивается на коэффициент роста, который по умолчанию равен 2,0.

В классе Queue определяются приведенные ниже конструкторы.


public Queue()

public Queue (int capacity)

public Queue (int capacity, float growFactor)

public Queue (ICollection col)


В первой форме конструктора создается пустая очередь с выбираемыми по умолчанию емкостью и коэффициентом роста 2,0. Во второй форме создается пустая очередь, первоначальный размер которой определяет емкость, задаваемая параметром capacity, а коэффициент роста по умолчанию выбирается для нее равным 2,0. В третьей форме допускается указывать не только емкость (в качестве параметра capacity), но и коэффициент роста создаваемой очереди (в качестве параметра growFactor в пределах от 1,0 до 10,0). И в четвертой форме создается очередь, состоящая из элементов указываемой коллекции col. Ее первоначальная емкость равна количеству указанных элементов, а коэффициент роста по умолчанию выбирается для нее равным 2,0.

Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных