Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

13. Коллекции: класс Stack. 14. Коллекции: класс Queue.. 15. Коллекции: класс ArrayaList.




13. Коллекции: класс Stack.

АТД стек - это частный случай однонаправленного списка, добавление элементов в который и выборка элементов из которого выполняются с одного конца, называемого вершиной стека (головой - head). При выборке элемент исключается из стека. Стек реализует принцип обслуживания LIFO (last in - fist out, последним пришел - первым вышел).

В С# реализацию АТД стек представляет класс Stack, который реализует интерфейсы ICollection, IEnumerable и ICloneable. Stack - это динамическая коллекция, размер которой изменяется.

В классе Stack определены следующие конструкторы:

public Stack(); //создает пустой стек, начальная вместимость которого равна 10

public Stack(int capacity); // создает пустой стек, начальная вместимость которого равна capacity

public Stack(ICollection c); //создает стек, который содержит элементы коллекции, заданной

//параметром с, и аналогичной (аналогичной - с чем? ) вместимостью

public virtual void Clear() - Устанавливает свойство Сount равным нулю, тем самым очищая стек.

public virtual object Peek() - Возвращает элемент, расположенный в вершине стека, но не извлекая его из стека.

public virtual object Pop() - Возвращает элемент, расположенный в вершине стека, и извлекает его из стека.

public virtual void Push(object v) - Помещает объект v в стек.

Пример 1. Для заданного значения n запишем в стек все числа от 1 до n, а затем извлечем из стека:

public static void Main()

{ Console. Write(" n= " );

int n=int. Parse(Console. ReadLine());

Stack intStack = new Stack();

for (int i = 1; i < = n; i++)

 intStack. Push(i);

Console. WriteLine(" Размерность стека " + intStack. Count);

Console. WriteLine(" Верхний элемент стека = " + intStack. Peek());

Console. WriteLine(" Размерность стека " + intStack. Count);

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

while (intStack. Count! = 0)

Console. Write(" {0} ", intStack. Pop());

Console. WriteLine(" \nНовая размерность стека " + intStack. Count); } }

 

14. Коллекции: класс Queue.

АТД очередь - это частный случай однонаправленного списка, добавление элементов в который выполняется в один конец, а выборка производится с другого конца.

Очередь реализует принцип обслуживания FIFO (fist in - fist out, первым пришел - первым вышел).

В С# реализацию АТД очередь представляет класс Queue, который также как и стек реализует интерфейсы ICollection, IEnumerable и ICloneable. Queue - это динамическая коллекция, размер которой изменяется.

В классе Queue определены следующие конструкторы:

public Queue(); //создает пустую очередь, начальная вместимость которой равна 32

public Queue (int capacity); // создает пустую очередь, начальная вместимость которой равна capacity

public Queue (int capacity, float n); //устанавливается параметром n

Кроме методов, определенных в интерфейсах, реализуемых классом Queue, в этом классе определены собственные методы:

public virtual void clear () - Устанавливает свойство Count равным нулю, тем самым очищая очередь.

public virtual object Dequeue () - Возвращает объект из начала вызывающей очереди, удаляя его из очереди.

public virtual object Peek () - Возвращает объект из начала вызывающей очереди, не удаляя его из очереди.

public virtual void Enqueue(object v) - Добавляет объект v в конец очереди.

Для заданного значения n запишем в очередь все числа от 1 до n, а затем извлечем их из очереди:

public static void Main()

{

Console. Write(" n= " );

int n=int. Parse(Console. ReadLine());

Queue intQ = new Queue();

for (int i = 1; i < = n; i++)

intQ. Enqueue(i);

Console. WriteLine(" Размерность очереди " + intQ. Count);

 

Console. WriteLine(" Верхний элемент очереди = " + intQ. Peek());

Console. WriteLine(" Размерность очереди " + intQ. Count);

     

Console. Write(" Содержимое очереди = " );

while (intQ. Count! =0)

Console. Write(" {0} ", intQ. Dequeue());

Console. WriteLine(" \nНовая размерность очереди " + intQ. Count);

}

 

15. Коллекции: класс ArrayaList.

В С# стандартные массивы имеют фиксированную длину, которая не может измениться во время выполнения программы. Класс ArrayList предназначен для поддержки динамических массивов, которые при необходимости могут увеличиваться или сокращаться.

Объект класса ArrayList представляет собой массив переменной длины, элементами которого являются объектные ссылки. Любой объект класса ArrayList создается с некоторым начальным размером. При превышении этого размера коллекция автоматически удваивается. В случае удаления объектов массив можно сократить.

Класс ArrayList реализует интерфейсы ICollection, IList, IEnumerable и ICloneable. В классе ArrayList определены следующие конструкторы:

//создает пустой массив с максимальной емкостью равной 16 элементам, при текущей размерности 0

public ArrayList() 

public ArrayList(int capacity) //создает массив с заданной емкостью capacity, при текущей размерности 0

public ArrayList(ICollection с) //строит массив, который инициализируется элементами коллекции с

public virtual void AddRange (ICollection с) - Добавляет элементы из коллекции с в конец вызывающей коллекции.

public virtual int BinarySearch (object v) - В вызывающей отсортированной коллекции выполняет поиск значения, заданного параметром v. Возвращает индекс найденного элемента. Если искомое значение не обнаружено, возвращает отрицательное значение.

public static ArrayList FixedSize(ArrayList ar) - Превращает коллекцию ar в ArrayList-массив с фиксированным размером и возвращает результат.

public virtual int LastlndexOf(object v) - Возвращает индекс последнего вхождения объекта v в вызывающей коллекции. Если искомый объект не обнаружен, возвращает отрицательное значение.

public virtual void RemoveRange(int idx, int count) - Удаляет count элементов из вызывающей коллекции, начиная с элемента, индекс которого равен значению idx.

public virtual void Reverse() - Располагает элементы вызывающей коллекции в обратном порядке.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...