Для стека определены две основные операции:
В рассматриваемом здесь примере создается классStack,реализующий функции стека. В качестве базовых средств для хранения данных в стеке служит закрытый массив. А операции размещения и извлечения данных из стека доступны с помощью открытых методов классаStack.Таким образом, открытые методы действуют по упомянутому выше’принципу "последним пришел — первым обслужен". Как следует из приведенного ниже кода, в классеStackсохраняются символы, но тот же самый механизм может быть использован и для хранения данных любого другого типа.
// Класс для хранения символов в стеке.
using System;
class Stack {
// Эти члены класса являются закрытыми, char[] stck; // массив, содержащий стек int tos; // индекс вершины стека
// Построить пустой класс Stack для реализации стека заданного размера, public Stack(int size) {
stck = new char[size]; // распределить память для стека tos = 0;
}
// Поместить символы в стек, public void Push(char ch) { if(tos==stck.Length) {
Console.WriteLine(" - Стек заполнен."); return;
}
stck[tos] = ch; tos++;
}
// Извлечь символ из стека, public char Pop {
if(tos==0) {
Console.WriteLine(" - Стек пуст."); return (char) 0;
}
tos — ;
return stck[tos];
}
// Возвратить значение true, если стек заполнен, public bool IsFullO { return tos==stck.Length;
}
// Возвратить значение true, если стек пуст, public bool IsEmptyO { return tos==0;
// Возвратить общую емкость стека, public int Capacity {
return stck.Length;
}
// Возвратить количество объектов, находящихся в данный момент в стеке, public int GetNum { return tos;
}
}
Рассмотрим класс Stack более подробно. В начале этого класса объявляются две следующие переменные экземпляра.
// Эти члены класса являются закрытыми, char[] stck; // массив, содержащий стек int tos; // индекс вершины стека
Массив stck предоставляет базовые средства для хранения данных в стеке (в данном случае — символов). Обратите внимание на то, что память для этого массива не распределяется. Это делается в конструкторе класса Stack. А член tos данного класса содержит индекс вершины стека.