Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
s__ekzamen.docx
Скачиваний:
7
Добавлен:
18.12.2018
Размер:
113.34 Кб
Скачать

31. Очереди.

Очередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется.

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

аdd() – занести в очередь значение

print() – вывести все значения очереди на экран

num() – вернуть количество значений в очереди

isempty() – вернуть значение true (тип bool), если очередь пустая

Сейчас можно смело работать с очередью. Для работы нам могут понадобиться следующие методы:

Enqueue() - помещает элемент в конец очереди

Dequeue() - достает из очереди первый элемент

В принципе этого вполне достаточно. У класса Queue есть еще несколько полезных методов:

Contains() - проверяет имеется ли данный объект в очереди

Count - свойство, содержащее количество элементов в очереди

Peek() - возвращает первый элемент в очереди, но не удаляет его

Рассмотрим пример:

q.Enqueue(3); //помещаем в очередь тройку

q.Enqueue(4); //помещаем в очередь четверку

q.Enqueue(5); //помещаем в очередь пятерку //наша очередь выглядит так: 5 4 3

Console.WriteLine("В очереди содержится " + q.Count + " объекта"); //выведет 3

Console.WriteLine("Первый элемент: " + q.Peek()); //выведет 3

Console.WriteLine((int)q.Dequeue() (int)q.Dequeue() - (int)q.Dequeue()); //3+4-5=2 }

33. Строки, как массив символов.

Таким образом, можно определить строки двумя способами: как массив символов или как указатель на первый символ строки , например:

char str1[10] = "string1"; // объявление строки с помощью массива символов

Итак, теперь подробнее. Вы уже знаете, что массив - это набор однородных значений.

Так вот строка есть не что иное, как набор символов, и, соответственно, для хранения строк можно использовать символьные массивы .

Например, строка "QWERTY" имеет тип char[7], а пустая строка "" имеет тип char[1]. Почему char[1]? Именно потому, что любая строка завершается так называемым нулевым символом, то есть символом, код которого в ASCII-таблице равен 0.

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

char str[]={'A','B','C','D','E','�'};

Одна из замечательных особенностей при работе со строками - это возможность упрощенной начальной инициализации. Например,

Объявление char str[] = "ABCDE"; присваивает переменной-строке

Еще одна особенность работы с символьными массивами - если элементы произвольного массива можно вводить с клавиатура и выводить на экран только по одному элементу в цикле, то в символьный массив можно ввести сразу всю строку , используя оператор ввода

cin >> Имя_ массива ;

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

cout << Имя_ массива ;

Следует сразу отметить, что при вводе с клавиатуры строки оператор cin автоматически добавляет в конец строки нулевой символ , так что Вы должны учитывать этот факт при указании количества элементов при объявлении массива .

Второй способ определения строки - это использование указателя на символ. Объявление

char *b;

Например,

#include<iostream.h>

void main()

{ char str[] = "Здравствуй, мир!"; // объявляем символьный массив

char *b; // объявляем указатель на символ

b = &str[12]; // теперь b указывает на 12-ый символ str

*b = 'M'; // присваиваем первому элементу b символ 'М'

cout << b; // выводим строку b на экран (Мир!)}

Первый и самый очевидный способ присваивания строк – присваивание отдельных символов. Например,str1[0]=’H’;

str1[1]=’e’;

str1[2]=’l’;

str1[3]=’l’;

str1[4]=’o’;

str1[5]=’\0’;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]