В приведенном ниже примере программы создается стек, в который помещается несколько целых значений, а затем они извлекаются обратно из стека.
// Продемонстрировать применение класса 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
. В нем реализуются интерфейсы ICollection, IEnumerable
и ICloneable
. Этот класс создает динамическую коллекцию, которая расширяется, если в ней необходимо хранить вводимые элементы. Так, если в очереди требуется свободное место, ее размер увеличивается на коэффициент роста, который по умолчанию равен 2,0.
В классе Queue
определяются приведенные ниже конструкторы.
public Queue()
public Queue (int
public Queue (int
public Queue (ICollection
В первой форме конструктора создается пустая очередь с выбираемыми по умолчанию емкостью и коэффициентом роста 2,0. Во второй форме создается пустая очередь, первоначальный размер которой определяет емкость, задаваемая параметром